<<if setup.isPartnerLivingAtWarehouse("bradford")>><<goto "Warehouse">><</if>>
<<if setup.shouldOfferPartnerWarehouseMove("bradford")>><<set $partnerRelocation.partner to "bradford">><<goto "Partner Warehouse Move Conversation">><</if>>
<<if setup.tryBradfordScentEncounter("Bradford Apartment Living Room")>><<goto "Bradford Scent Encounter">><</if>>
<<nobr>>
<h2>Bradford's apartment</h2>
<p>The living room serves as the apartment's central hall. Bradford has made space for your belongings, and the once-spartan rooms are slowly beginning to feel shared.</p>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="The living room in Bradford's apartment">
[[Bedroom->Bradford Apartment Bedroom]]<br>
<<link "Bathroom">><<goto setup.getBradfordApartmentBathroomDestination()>><</link>><br>
[[Kitchen->Bradford Apartment Kitchen]]<br>
[[Sofa->Bradford Apartment Sofa]]<br>
<<if setup.isDressedForOutside()>>
[[Outside->Slums]]
<<else>>
<span class="passage-link-disabled" aria-disabled="true">Outside</span>
<p class="table-order-error">You need to put on an outfit and shoes before going outside.</p>
<</if>>
<</nobr>><<if setup.tryBradfordScentEncounter("Bradford Apartment Bedroom")>><<goto "Bradford Scent Encounter">><</if>>
<<nobr>>
<h2>Your bedroom</h2>
<p>You share this room with Bradford now. His few practical belongings leave plenty of space for yours.</p>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/bedroom.jpg" @alt="$mcname + ' and Bradford\'s bedroom'">
[[Bed->Bradford Apartment Bed]]<br>
[[Wardrobe]]<br>
[[Equipment]]<br>
[[Exercise]]<br>
[[Living room->Bradford Apartment Living Room]]
<</nobr>><<nobr>>
<h2>Bed</h2>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/bedroom.jpg" @alt="'The bed shared by ' + $mcname + ' and Bradford'">
<<say $mcname setup.getMcPortrait() "thought">>After everything that happened, it is comforting to know Bradford is close.<</say>>
<<if setup.ensureBradfordState().girlfriend>>
<<link "Have sex with Bradford">>
<<set _bradfordSexStart to setup.startBradfordRepeatSex("Bradford Bedroom Aftercare")>>
<<goto _bradfordSexStart.destination>>
<</link>><br>
<</if>>
<<if !setup.canSleepNow()>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getSleepLockMessage()">Sleep</span><br>
<<elseif setup.shouldTriggerBradfordRelationshipNight()>>
[[Sleep->Bradford Relationship Night]]<br>
<<else>>
[[Sleep->Bradford Apartment Sleep]]<br>
<</if>>
[[Return->Bradford Apartment Bedroom]]
<</nobr>><<nobr>>
<h2>What are we?</h2>
<img class="scene-image" src="media/locations/bradfordapartment/sleep3.jpg" alt="The main character cuddling naked with Bradford in bed">
<p>Before settling in for the night, you and Bradford undress as usual and lie together beneath the covers. You cuddle against his broad chest, but a question keeps circling through your thoughts.</p>
<<say $mcname setup.getMcPortrait() "thought">>What are we now? We live together, sleep together... but neither of us has ever actually said it.<</say>>
<p>You nuzzle closer, gather your courage, and finally look up at him.</p>
<<say $mcname setup.getMcPortrait() "jane">>Bradford... what are we?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I... I don't know. I suppose... I think you and I are together now.<</say>>
<p>His brief stammer breaks through his usual composure. Relief and happiness surge through you, and you hug him tightly before he can say anything more.</p>
<p>Bradford gently threads a hand through your hair while you nuzzle into his chest.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Do you want us to make it official?<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Yes. I really do.<</say>>
<p>Bradford leans down and places a tender kiss on the top of your head.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I really do love you, $mcname.<</say>>
<p>You lift yourself toward him, kiss him on the lips, and remain close enough to feel his breath when you answer.</p>
<<say $mcname setup.getMcPortrait() "jane">>I love you too, Bradford.<</say>>
<<link "Fall asleep together">>
<<set _bradfordRelationshipNight to setup.completeBradfordRelationshipNight()>><<run UIBar.update()>><<goto "Bradford Apartment Bedroom">>
<</link>>
<</nobr>><<nobr>>
<<run setup.soberUp()>><<run setup.advanceGameDay()>><<run UIBar.update()>>
<p>You settle beside Bradford and sleep safely through the night.</p>
<<switch random(1, 3)>>
<<case 1>><img class="scene-image" src="media/locations/bradfordapartment/sleep1.jpg" alt="Sleeping naked beside Bradford">
<<case 2>><img class="scene-image" src="media/locations/bradfordapartment/sleep2.jpg" alt="Sleeping naked beside Bradford">
<<case 3>><img class="scene-image" src="media/locations/bradfordapartment/sleep3.jpg" alt="Sleeping naked beside Bradford">
<</switch>>
<<link "Wake up">><<goto setup.getBradfordMorningDestination()>><</link>>
<</nobr>><<nobr>>
<h2>An early opportunity</h2>
<img class="scene-image" src="media/locations/bradfordapartment/sleep3.jpg" alt="The main character waking beside Bradford">
<p>You wake before Bradford and remain nestled beside him for a quiet moment. As you shift beneath the covers, you notice the unmistakable shape of his morning erection.</p>
<<say $mcname setup.getMcPortrait() "thought">>He's still asleep... I could give him a much better alarm than the one on his clock.<</say>>
<<link "Suck him awake">><<run setup.acceptBradfordMorningAlarm()>><<goto "Bradford Morning Alarm">><</link>><br>
<<link "Ignore it">><<goto setup.getBradfordHomeRoomPassage("bedroom")>><</link>>
<</nobr>><<nobr>>
<h2>A better alarm</h2>
<<switch random(1, 2)>>
<<case 1>><img class="scene-image" src="media/locations/bradfordapartment/bradfordwakealarm1.webp" alt="The main character sucking Bradford awake">
<<case 2>><img class="scene-image" src="media/locations/bradfordapartment/bradfordwakealarm2.webp" alt="The main character sucking Bradford awake">
<</switch>>
<p>You slip beneath the covers, wrap your lips around Bradford's cock, and begin working your mouth over his morning erection. His breathing changes as he wakes and realizes that his girl is giving him an exceptionally thoughtful morning gift.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Fuck... good morning. I love you.<</say>>
<p>You smirk around him, pull your mouth away for only a moment, and look up.</p>
<<say $mcname setup.getMcPortrait() "jane">>You better. Who else has that kind of alarm clock, hmm?<</say>>
<p>You take him back into your mouth. Bradford laughs at the comment, relaxes into the bed, and gently caresses your head while you continue sucking him, making certain his entire day begins on a better note.</p>
<<if $bradfordMorningAlarmChanges.disposition isnot 0>>
<p @class="'gym-stat-gain stat-change-confirmation stat-change-confirmation--disposition stat-change-confirmation--' + ($bradfordMorningAlarmChanges.disposition > 0 ? 'increase' : 'decrease')"><strong>Disposition <<if $bradfordMorningAlarmChanges.disposition > 0>>+<</if>><<print $bradfordMorningAlarmChanges.disposition>></strong></p>
<</if>>
<<if $bradfordMorningAlarmChanges.corruption isnot 0>>
<p @class="'gym-stat-gain stat-change-confirmation stat-change-confirmation--corruption stat-change-confirmation--' + ($bradfordMorningAlarmChanges.corruption > 0 ? 'increase' : 'decrease')"><strong>Corruption <<if $bradfordMorningAlarmChanges.corruption > 0>>+<</if>><<print $bradfordMorningAlarmChanges.corruption>></strong></p>
<</if>>
<<link "Start the day">><<goto setup.getBradfordHomeRoomPassage("bedroom")>><</link>>
<</nobr>><<nobr>>
<h2>Afterward</h2>
<img class="scene-image" src="media/locations/bradfordapartment/sleep3.jpg" alt="The main character resting naked with Bradford">
<p>Once the intensity fades, Bradford draws you into his arms and lets his familiar gentleness return. He checks that you are comfortable, gives you water, and keeps you tucked safely against his chest until your breathing settles.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Stay here a while. I'm not finished holding you yet.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I wasn't planning to move.<</say>>
<<if setup.isPartnerLivingAtWarehouse("bradford") && setup.rollWarehouseIrineAftercareInterruption()>>
<p>A muffled moan slips through the wall from Irine's room, followed by the rhythmic creak of her bed. After another breathless sound makes it very clear that she is entertaining herself, you and Bradford look at each other.</p>
<<say $mcname setup.getMcPortrait() "jane">>Apparently we aren't the only ones having a good night.<</say>>
<p>Bradford raises an eyebrow, then fails to suppress a quiet, amused chuckle.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>These walls need better insulation. For everyone's dignity.<</say>>
<p>You bury your grin against his chest while Irine's muffled enjoyment continues on the other side of the wall.</p>
<</if>>
<<if setup.isPartnerLivingAtWarehouse("bradford")>>
[[Return to bed->Warehouse Shared Bed]]
<<else>>
[[Return to bed->Bradford Apartment Bed]]
<</if>>
<</nobr>><<nobr>>
<h2>A private release</h2>
<<say $mcname setup.getMcPortrait() "thought">>I need this... just a few quiet minutes alone.<</say>>
<<switch random(1, 6)>>
<<case 1>><video src="media/myroom/exercise/masturbate1.mp4" autoplay loop muted controls playsinline></video>
<<case 2>><video src="media/myroom/exercise/masturbate2.mp4" autoplay loop muted controls playsinline></video>
<<case 3>><video src="media/myroom/exercise/masturbate3.mp4" autoplay loop muted controls playsinline></video>
<<case 4>><video src="media/myroom/exercise/masturbate4.mp4" autoplay loop muted controls playsinline></video>
<<case 5>><video src="media/myroom/exercise/masturbate5.mp4" autoplay loop muted controls playsinline></video>
<<case 6>><video src="media/myroom/exercise/masturbate6.mp4" autoplay loop muted controls playsinline></video>
<</switch>>
<<if $masturbationConstitutionResult is "gained">>
<p class="gym-stat-gain"><strong>Constitution +1</strong></p>
<<elseif $masturbationConstitutionResult is "maximum">>
<p class="gym-stat-gain"><strong>Constitution is already at its maximum.</strong></p>
<<else>>
<p class="gym-stat-gain"><strong>You have already gained Constitution from this today.</strong></p>
<</if>>
<p>You work yourself through a quick orgasm and sink back against the bed, flushed and catching your breath. Before you can straighten your clothes, Bradford appears in the doorway and takes in the obvious aftermath.</p>
[[Look toward Bradford->Bradford Catches MC Masturbating]]
<</nobr>><<nobr>>
<h2>Not quite finished</h2>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You could have called me. Do you want some help making that last a little longer?<</say>>
<p>The suggestion sends fresh warmth through you despite the orgasm you just gave yourself.</p>
<<say $mcname setup.getMcPortrait() "jane">>I thought I was finished... but I wouldn't say no to your help.<</say>>
[[Let Bradford help->Bradford Helps MC Finish]]
<</nobr>><<nobr>>
<h2>Bradford's help</h2>
<<switch random(1, 2)>>
<<case 1>><video class="scene-image" src="media/arthursroom/sex/cunnilingus/tonguefuck/1.mp4" autoplay loop muted controls playsinline></video>
<<case 2>><video class="scene-image" src="media/arthursroom/sex/cunnilingus/clitsuck/1.mp4" autoplay loop muted controls playsinline></video>
<</switch>>
<p>Bradford settles between your legs and presses his mouth against your already-sensitive pussy. His tongue patiently rebuilds the pleasure you thought you had spent, then drives it higher until another orgasm rolls through you.</p>
<<say $mcname setup.getMcPortrait() "jane">>Bradford... fuck, I wasn't ready to come again that quickly.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Next time, ask me before you decide you've had enough.<</say>>
<<link "Recover">><<goto setup.getBradfordHomeRoomPassage("bedroom")>><</link>>
<</nobr>><<if setup.tryBradfordScentEncounter("Bradford Apartment Bathroom")>><<goto "Bradford Scent Encounter">><</if>>
<<nobr>>
<h2>Bathroom</h2>
<p>The bathroom is simple, clean, and private.</p>
<img class="scene-image" src="media/locations/melisasapartment/bathroom/bathroom.jpg" alt="Bradford's bathroom">
[[Shower]]<br>
[[Mirror]]<br>
[[Living room->Bradford Apartment Living Room]]
<</nobr>><<nobr>>
<h2>Someone is already here</h2>
<<if setup.isPartnerLivingAtWarehouse("bradford")>>
<img class="scene-image" src="media/locations/middlecity/warehouse/bathroom.jpg" alt="The Warehouse bathroom">
<p>You enter the Warehouse bathroom and find steam curling through the renovated room. Bradford is already beneath the shower, apparently having claimed it before you.</p>
<<say $mcname setup.getMcPortrait() "thought">>We finally have a proper shower, and he expects me to let him enjoy it alone? Not a chance.<</say>>
<<else>>
<img class="scene-image" src="media/locations/melisasapartment/bathroom/bathroom.jpg" alt="Bradford's bathroom">
<p>You approach the bathroom and hear the shower running. Through the partially open door, you realize Bradford is already beneath the water.</p>
<<say $mcname setup.getMcPortrait() "thought">>I could leave him alone... or make his shower a little more interesting.<</say>>
<</if>>
[[Join in->Bradford Shower Join]]<br>
<<link "Give him some privacy">><<goto setup.getBradfordHomeRoomPassage("living")>><</link>>
<</nobr>><<nobr>>
<h2>Unexpected company</h2>
<video class="scene-image" src="media/locations/bradfordapartment/showermcjoin1.mp4" autoplay loop muted controls playsinline></video>
<p>You quietly undress, step into the shower behind Bradford, and slide your naked body against his back while your hands caress him. He tenses in surprise before recognizing your touch.</p>
<<if setup.isPartnerLivingAtWarehouse("bradford")>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I thought this place had more than enough room for you to give me a warning.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>It has enough room for both of us. That's all the warning you get.<</say>>
<<else>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You could have warned me.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>You don't sound like you want me to leave.<</say>>
<</if>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I don't.<</say>>
[[Stay close->Bradford Shower Kiss]]
<</nobr>><<nobr>>
<h2>Under the water</h2>
<video class="scene-image" src="media/locations/bradfordapartment/showerkiss1.mp4" autoplay loop muted controls playsinline></video>
<p>Bradford turns in your arms, draws you against his chest, and kisses you deeply beneath the falling water. Any remaining surprise gives way to eager affection.</p>
<<say $mcname setup.getMcPortrait() "jane">>Mmm... that's a much better welcome.<</say>>
[[Continue->Bradford Shower Cunnilingus]]
<</nobr>><<nobr>>
<h2>Bradford moves lower</h2>
<video class="scene-image" src="media/locations/bradfordapartment/showercunnilingus1.mp4" autoplay loop muted controls playsinline></video>
<p>Bradford kisses his way down your wet body and settles between your legs. His tongue works over your pussy with focused patience until pleasure overtakes you and an orgasm shakes through your body.</p>
<<say $mcname setup.getMcPortrait() "jane">>Bradford—yes... don't stop! I'm coming!<</say>>
[[Pull him back up->Bradford Shower Grope]]
<</nobr>><<nobr>>
<h2>Rough hands</h2>
<video class="scene-image" src="media/locations/bradfordapartment/showergrope1.mp4" autoplay loop muted controls playsinline></video>
<p>Bradford rises as you turn around. His arms encompass you from behind and his large hands close roughly around your breasts, squeezing hard enough to draw another helpless moan from you.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Stay against me. I'm not finished with you.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I was hoping you weren't.<</say>>
[[Let him continue->Bradford Shower Sex]]
<</nobr>><<nobr>>
<h2>Against the shower</h2>
<video class="scene-image" src="media/locations/bradfordapartment/showersex1.mp4" autoplay loop muted controls playsinline></video>
<p>Bradford makes you lean forward, enters you from behind, and quickly settles into the rough pace you have learned to enjoy. One hand pulls your hair while his hips drive firmly against you.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Hold still and take it. You knew exactly what joining me would start.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Fuck—yes! That's why I came in here!<</say>>
[[Finish him with your mouth->Bradford Shower Blowjob]]
<</nobr>><<nobr>>
<h2>On your knees</h2>
<img class="scene-image" src="media/locations/bradfordapartment/showerblowjob1.webp" alt="The main character kneeling before Bradford in the shower">
<p>You kneel in front of Bradford and take his cock into your mouth, determined to finish what the two of you started.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Good girl. Keep your mouth around me—I'm close.<</say>>
[[Swallow for him->Bradford Shower Swallow]]
<</nobr>><<nobr>>
<h2>Every drop</h2>
<img class="scene-image" src="media/locations/bradfordapartment/showerswallow1.webp" alt="The main character swallowing Bradford's cum in the shower">
<p>Bradford unloads into your mouth. You swallow every thick pulse, savoring the familiar taste of his cum before looking up at him with a satisfied smile.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You can visit me like that anytime you want.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I'll keep that in mind.<</say>>
<p>Your smile makes the promise behind the words unmistakable.</p>
<<link "Finish showering">><<goto setup.getBradfordHomeRoomPassage("living")>><</link>>
<</nobr>><<if setup.tryBradfordScentEncounter("Bradford Apartment Kitchen")>><<goto "Bradford Scent Encounter">><</if>>
<<nobr>>
<h2>Kitchen</h2>
<p>Bradford gladly leaves most of the delicate cooking to you, but he does his share of the practical work.</p>
<img class="scene-image" src="media/locations/melisasapartment/kitchen/kitchen.webp" alt="Bradford's kitchen">
<<if setup.hasCookedForBradfordToday()>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="You have already cooked for Bradford today.">Cook Meal</span><br>
<<elseif setup.canPerformDayPhaseAction("cookMeal")>>
<<link "Cook Meal" "Bradford Cooking">><<run setup.advanceDayPhasesForAction("cookMeal")>><</link>><br>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('cookMeal')">Cook Meal</span><br>
<</if>>
<<if setup.canPerformDayPhaseAction("dishes")>>
<<link "Do dishes">><<run setup.advanceDayPhasesForAction("dishes")>><<goto setup.getBradfordDishesDestination()>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('dishes')">Do dishes</span>
<</if>><br>
[[Living room->Bradford Apartment Living Room]]
<</nobr>><<nobr>>
<h2>Interrupted chores</h2>
<<if setup.isPartnerLivingAtWarehouse("bradford")>>
<p>The sounds of water and clinking dishes cover Bradford's approach through the Warehouse kitchen. His hands settle on your hips, and before you can do more than gasp, he takes you by surprise.</p>
<<else>>
<p>You are partway through the dishes when Bradford silently closes in behind you. His hands settle on your hips, and before you can do more than gasp, he takes you by surprise.</p>
<</if>>
<img class="scene-image bradford-dishes-surprise-media" src="media/locations/bradfordapartment/dishessurprise1.webp" alt="Bradford surprising the main character while she does the dishes">
<p>Bradford drives into you from behind, pulling your back into a deep arch so that you have to look up at him. The dishes are quickly forgotten beneath the sudden rush of pleasure.</p>
<<if setup.isPartnerLivingAtWarehouse("bradford")>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Go relax, love. I'll deal with what we left in the sink.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>You had better... I don't think my legs are ready for standing anymore.<</say>>
<<else>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Go relax, love. I'll finish the rest of the dishes.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>O-okay... Just give me a moment to catch my breath.<</say>>
<</if>>
<p>Still panting from the pleasurable surprise, you leave Bradford to make good on his promise.</p>
<<link "Go relax">><<goto setup.getBradfordHomeRoomPassage("living")>><</link>>
<</nobr>><<nobr>>
<<set _bradfordScentCorruption to setup.adjustCorruption(2)>><<run UIBar.update()>>
<h2>His scent</h2>
<<switch $bradfordScentReturnPassage>>
<<case "Warehouse My Room">>
<p>You find Bradford arranging a few of his belongings among yours. When he straightens, you drift close and fold yourself against his chest.</p>
<<case "Warehouse Bathroom">>
<p>Bradford crosses the renovated bathroom to reach for a clean towel. You intercept him, slip into his arms, and press your face against him.</p>
<<case "Warehouse Kitchen">>
<p>Bradford pauses beside the kitchen counter as you approach. Instead of passing him, you slide into his arms and nuzzle against his broad chest.</p>
<<case "Warehouse">>
<<if setup.isWarehouseBarComplete()>>
<p>You catch Bradford during a quiet moment in the Bar. Hidden briefly from the patrons by his broad frame, you press close and bury your face against him.</p>
<<else>>
<p>You cross paths with Bradford in the Warehouse's main hall. Almost without thinking, you step into his space and press yourself against him.</p>
<</if>>
<<default>>
<p>You drift close to Bradford and, almost without thinking, press yourself against him.</p>
<</switch>>
<img class="scene-image" src="media/locations/bradfordapartment/mcsmell1.jpg" alt="The main character nuzzling into Bradford">
<p>You nuzzle into him and breathe deeply. His warm, masculine scent fills your senses, sending an unexpected pulse of arousal through you.</p>
<<if String($bradfordScentReturnPassage || "").startsWith("Warehouse")>>
<<say $mcname setup.getMcPortrait() "thought">>God... even here, surrounded by paint, steel, and dust, his scent cuts through everything. I could stay like this all day.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Comfortable there, love?<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Very. Don't move yet.<</say>>
<<else>>
<<say $mcname setup.getMcPortrait() "thought">>God... he smells so good. Why is that turning me on so much?<</say>>
<</if>>
<p>Bradford simply wraps his arms around you and holds you close, unaware of how completely his scent has captivated you.</p>
<<if $bradfordScentDispositionChange isnot 0>>
<p @class="'gym-stat-gain stat-change-confirmation stat-change-confirmation--disposition stat-change-confirmation--' + ($bradfordScentDispositionChange > 0 ? 'increase' : 'decrease')"><strong>Disposition <<if $bradfordScentDispositionChange > 0>>+<</if>><<print $bradfordScentDispositionChange>></strong></p>
<<else>>
<p class="gym-stat-gain"><strong>Disposition is already at its limit.</strong></p>
<</if>>
<<link "Continue">><<goto setup.finishBradfordScentEncounter()>><</link>>
<</nobr>><<nobr>>
<<set _bradfordCooking to setup.applyBradfordCookingRentReduction()>><<run UIBar.update()>>
<h2>Cooking for Bradford</h2>
<p>You gather the ingredients available in Bradford's kitchen and prepare a meal for both of you.</p>
<<switch random(1, 2)>>
<<case 1>><video src="media/kitchen/cooking/cooking1.mp4" autoplay loop controls muted playsinline></video>
<<case 2>><video src="media/kitchen/cooking/cooking2.mp4" autoplay loop controls muted playsinline></video>
<</switch>>
<<if _bradfordCooking.ok>>
<p class="gym-stat-gain"><strong>Weekly rent reduced by c<<print _bradfordCooking.reduction>>. Remaining rent: c<<print _bradfordCooking.after>>.</strong></p>
<<else>>
<p class="gym-stat-gain"><strong>This week's rent is already fully covered.</strong></p>
<</if>>
[[Eat together->Bradford Meal Together]]
<</nobr>><<nobr>>
<h2>Dinner together</h2>
<p>You carry the finished meal to the table and present it to Bradford before taking the seat beside him. The two of you settle in and begin eating together.</p>
<<switch random(1, 5)>>
<<case 1>><img class="scene-image" src="media/kitchen/eating/eating1.webp" alt="Eating a meal with Bradford">
<<case 2>><img class="scene-image" src="media/kitchen/eating/eating2.webp" alt="Eating a meal with Bradford">
<<case 3>><img class="scene-image" src="media/kitchen/eating/eating3.webp" alt="Eating a meal with Bradford">
<<case 4>><img class="scene-image" src="media/kitchen/eating/eating4.webp" alt="Eating a meal with Bradford">
<<case 5>><img class="scene-image" src="media/kitchen/eating/eating5.webp" alt="Eating a meal with Bradford">
<</switch>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>This is excellent. Though the food isn't the only thing in this kitchen that looks good enough to taste.<</say>>
<p>Heat rushes into your cheeks despite the playful smile you try to hide behind another bite.</p>
<<say $mcname setup.getMcPortrait() "jane">>Bradford... stop it and eat your dinner.<</say>>
<p>His quiet chuckle makes it clear that he considers the blush a victory. You finish the meal together in comfortable company.</p>
<<link "Finish">>
<<if setup.rollBradfordKitchenCunnilingus()>><<goto "Bradford Kitchen Thank You">><<else>><<goto "Bradford Apartment Kitchen">><</if>>
<</link>>
<</nobr>><<nobr>>
<h2>A proper thank you</h2>
<p>As you begin clearing the table, Bradford catches your wrist and gently draws you back toward him.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You cooked for me. Let me thank you properly.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Bradford, what are you—oh...<</say>>
<p>He lifts you onto the kitchen counter, moves between your legs, and puts his mouth to work before you can finish the question.</p>
<video class="scene-image" src="media/arthursroom/sex/cunnilingus/pussylick/1.mp4" autoplay loop muted controls playsinline></video>
<p>Your fingers tighten against the counter as his tongue draws every coherent thought out of your head. Bradford remains there until your body finally relaxes beneath his patient attention.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>That meal deserved more than a compliment.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>If that's how you show gratitude, I might cook more often.<</say>>
<<link "Catch your breath">><<goto setup.getBradfordHomeRoomPassage("kitchen")>><</link>>
<</nobr>><<nobr>>
<h2>Living room sofa</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="The sofa in Bradford's living room">
<<if setup.canPerformDayPhaseAction("nap")>>
<<link "Nap" "Bradford Apartment Nap">><<run setup.advanceDayPhasesForAction("nap")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('nap')">Nap</span>
<</if>><br>
<<if setup.canNapUntilNight()>><<link "Nap until Night" "Bradford Apartment Nap">><<run setup.advanceToNight()>><</link>><br><</if>>
<<if setup.canPerformDayPhaseAction("watchTv")>>
<<link "Watch TV">><<run setup.advanceDayPhasesForAction("watchTv")>><<goto setup.getBradfordTvDestination()>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('watchTv')">Watch TV</span>
<</if>><br>
[[Stand up->Bradford Apartment Living Room]]
<</nobr>><<nobr>>
<p>You stretch out on the sofa and drift into a peaceful nap.</p>
<<switch random(1, 2)>>
<<case 1>><img class="scene-image" src="media/myroom/sleep/napping/nap1.jpg" alt="Napping on the sofa">
<<case 2>><img class="scene-image" src="media/myroom/sleep/napping/nap2.jpg" alt="Napping on the sofa">
<</switch>>
<<link "Wake up">>
<<if setup.shouldBradfordKissMcAwake()>><<goto "Bradford Nap Kiss">><<else>><<goto "Bradford Apartment Sofa">><</if>>
<</link>>
<</nobr>><<nobr>>
<h2>The best awakening</h2>
<img class="scene-image" src="media/locations/bradfordapartment/napkiss1.webp" alt="Bradford passionately kissing the main character awake">
<p>As sleep releases you, Bradford notices your eyes beginning to open. He leans over the sofa and kisses you passionately, leaving you breathless before you are fully awake.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Did you have a good nap?<</say>>
<p>You look into his eyes, still dazed by the kiss, and mouth the only answer that feels adequate.</p>
<<say $mcname setup.getMcPortrait() "jane">>The best...<</say>>
<<link "Return">><<goto setup.getBradfordHomeRoomPassage("sofa")>><</link>>
<</nobr>><<nobr>>
<<say $mcname setup.getMcPortrait() "thought">>Bradford pretends not to care what I choose, but he always ends up watching with me.<</say>>
<<switch random(1, 4)>>
<<case 1>><img class="scene-image" src="media/arthursroom/tv/tv1.webp" alt="Watching television">
<<case 2>><img class="scene-image" src="media/arthursroom/tv/tv2.webp" alt="Watching television">
<<case 3>><img class="scene-image" src="media/arthursroom/tv/tv3.webp" alt="Watching television">
<<case 4>><img class="scene-image" src="media/arthursroom/tv/tv4.webp" alt="Watching television">
<</switch>>
[[Return->Bradford Apartment Sofa]]
<</nobr>><<nobr>>
<h2>A more interesting program</h2>
<img class="scene-image" src="media/locations/bradfordapartment/interestingtv1.webp" alt="The main character sucking Bradford while they watch television">
<p>The program soon loses your attention. You lean toward Bradford's crotch, open his trousers, and pull out his hardening cock. His eyes leave the screen as you wrap your lips around him and begin sucking.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Fuck... that feels good. You certainly know how to improve a quiet evening.<</say>>
<p>His hand settles against your head while you continue, the forgotten television murmuring in the background.</p>
<<link "Finish watching TV">><<goto setup.getBradfordHomeRoomPassage("sofa")>><</link>>
<</nobr>><p>Arthur's room is as cramped and carelessly kept as the rest of the residence.</p>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>He really does live like this on purpose, doesn't he?<</say>>\
<img class="scene-image" src="media/arthursroom/room.jpg">
<<nobr>>
[[Talk to Arthur]]<br>
<<if setup.canPerformDayPhaseAction("watchTv")>>
<<link "Watch TV" "Watch TV">><<run setup.advanceDayPhasesForAction("watchTv")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('watchTv')">Watch TV</span>
<</if>><br>
[[Hall->Slums Home]]
<</nobr>><<say "Arthur" "media/characters/arthur.jpg" "arthur">>Yeah? What is it?<</say>>
<<nobr>>
[[Chat->Arthur Chat]]<br>
<<if setup.canAccessArthurTease()>><<link "Tease" "Arthur Tease">><<run setup.adjustCorruption(2)>><</link>><br><</if>>
<<if setup.canAccessArthurSex()>>[[Check if in mood for something...->Arthur Sex]]<br><</if>>
[[End conversation->Arthur's room]]
<</nobr>><<nobr>>
<<switch random(1, 10)>>
<<case 1>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Arthur, the tap made a banging noise again. Is that dangerous?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Only dangerous if it stops banging. Means the pipes finally gave up.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Oh. So the noise means they're still working?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Close enough. Put a bucket under it if it starts dripping.<</say>>
<<case 2>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Do you know where I can buy groceries without spending too much?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Market under the east rail. Go near closing time and haggle.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>What if they get upset with me?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>They'll act upset. That's part of haggling. Don't apologize and pay full price.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Right. No apologizing. I can probably manage that.<</say>>
<<case 3>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>You still wandering around after dark?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Sometimes. Most people seem friendly enough when I smile at them.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>That's because they think you're selling something—or that they can sell something to you. Keep to the lit streets.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Okay. I'll be more careful if you think I should.<</say>>
<<case 4>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Have you always lived in the Slums?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Long enough to remember when this building had working heat on every floor.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Really? That must have been nice.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>It lasted three weeks. Best winter of my life.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Maybe somebody will fix it properly one day.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Sure, kid. And maybe the Lord-Governor will come down here and fix it himself.<</say>>
<<case 5>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Don't forget what you still owe on the rent.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I haven't forgotten. I promise I'll find a way to pay you.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Promises don't keep the lights on.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I know. Thank you for giving me time anyway.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Don't make me regret it.<</say>>
<<case 6>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Can you see the spaceport lights from the roof?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>On a clear night. Mostly you see smog pretending to be clouds.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I'd still like to look sometime.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Take a jacket and don't lean on the railing. It's older than you are.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I won't. Thanks for warning me.<</say>>
<<case 7>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Something smelled almost edible in the kitchen earlier.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I made stew. There is some left if you want it.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>You offering because you're nice, or because it tastes terrible?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Because I'm nice. I think it tastes good too.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Fine. Leave a bowl out. I'll risk it.<</say>>
<<case 8>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>The television keeps losing the picture.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Hit the side twice. Not the top—the side.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Does that actually repair it?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>No. But it scares it into working for another hour.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I'll try to remember the correct side.<</say>>
<<case 9>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Any luck finding work?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Not yet. One man said he'd contact me if something opened up.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Did he ask you to pay an application fee?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>He said it was only fifty credits.<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Then he's a thief. Never pay someone for the privilege of working for them.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Oh. I believed him. Thank you for telling me.<</say>>
<<case 10>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Do the neighbors always argue this loudly?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Those two? This is quiet for them.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Should we check if they're all right?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>They'll be sharing drinks again by midnight. Stay out of it.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>If you're sure. I suppose you know them better than I do.<</say>>
<</switch>>
<</nobr>>
[[Return->Talk to Arthur]]<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Well? Do you like what you see?<</say>>\
<<nobr>>
<<switch random(1, 8)>>
<<case 1>>
<video src="media/arthursroom/tease/tease1.mp4" autoplay loop controls></video>
<<case 2>>
<video src="media/arthursroom/tease/tease2.mp4" autoplay loop controls></video>
<<case 3>>
<video src="media/arthursroom/tease/tease3.mp4" autoplay loop controls></video>
<<case 4>>
<video src="media/arthursroom/tease/tease4.mp4" autoplay muted playsinline loop controls></video>
<<case 5>>
<video src="media/arthursroom/tease/tease5.mp4" autoplay loop controls></video>
<<case 6>>
<video src="media/arthursroom/tease/tease6.mp4" autoplay loop controls></video>
<<case 7>>
<video src="media/arthursroom/tease/tease7.mp4" autoplay loop controls></video>
<<case 8>>
<video src="media/arthursroom/tease/tease8.mp4" autoplay loop controls></video>
<</switch>>
<</nobr>>
[[Finish->Talk to Arthur]]<<run setup.resetArthurSexScene()>>
<div id="arthur-sex-ui">
<<arthurSexUI>>
</div><<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Of course this is what Arthur watches. I suppose it is more entertaining than another Protectorate news loop.<</say>>\
<<switch random(1, 4)>>
<<case 1>>
<img class="scene-image" src="media/arthursroom/tv/tv1.webp">
<<case 2>>
<img class="scene-image" src="media/arthursroom/tv/tv2.webp">
<<case 3>>
<img class="scene-image" src="media/arthursroom/tv/tv3.webp">
<<case 4>>
<img class="scene-image" src="media/arthursroom/tv/tv4.webp">
<</switch>>
[[Return->Arthur's room]]<p>The shared bathroom is worn and cramped, but the plumbing works most of the time.</p>\
<img class="scene-image" src="media/bathroom/bathroom.jpg">
<<link "Shower">><<goto setup.getArthurApartmentShowerDestination()>><</link>>
[[Mirror]]
[[Hall->Slums Home]]<p>You gather what ingredients you have and prepare a simple meal.</p>\
<<nobr>>
<<switch random(1, 2)>>
<<case 1>>
<video src="media/kitchen/cooking/cooking1.mp4" autoplay loop controls></video>
<<case 2>>
<video src="media/kitchen/cooking/cooking2.mp4" autoplay loop controls></video>
<<default>>
<video src="media/kitchen/cooking/cooking1.mp4" autoplay loop controls></video>
<</switch>>
<</nobr>>
[[Eat meal->Eating]]<<set _arthurDishesRent to setup.applyArthurDishesRentReduction()>><<run UIBar.update()>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Time to do the dishes. Living independently is glamorous.<</say>>
<<nobr>>
<<switch random(1, 5)>>
<<case 1>>
<img class="scene-image" src="media/kitchen/dishes/dishes1.webp" width="640" height="720">
<<case 2>>
<img class="scene-image" src="media/kitchen/dishes/dishes2.webp" width="640" height="720">
<<case 3>>
<img class="scene-image" src="media/kitchen/dishes/dishes3.webp" width="640" height="720">
<<case 4>>
<img class="scene-image" src="media/kitchen/dishes/dishes4.webp" width="640" height="720">
<<case 5>>
<img class="scene-image" src="media/kitchen/dishes/dishes5.webp" width="640" height="720">
<<default>>
<img class="scene-image" src="media/kitchen/dishes/dishes1.webp" width="640" height="720">
<</switch>>
<</nobr>>
<<if _arthurDishesRent.ok>><p class="gym-stat-gain"><strong>Weekly rent reduced by c<<print _arthurDishesRent.reduction>>. Remaining rent: c<<print _arthurDishesRent.after>>.</strong></p><</if>>
<<link "Finish">><<goto setup.getPlayerKitchenPassage()>><</link>><<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>
It is simple, but it is warm and filling.
<</say>>
<<nobr>>
<<switch random(1, 5)>>
<<case 1>>
<img class="scene-image" src="media/kitchen/eating/eating1.webp"
width="640" height="720" alt="Eating">
<<case 2>>
<img class="scene-image" src="media/kitchen/eating/eating2.webp"
width="640" height="720" alt="Eating">
<<case 3>>
<img class="scene-image" src="media/kitchen/eating/eating3.webp"
width="640" height="720" alt="Eating">
<<case 4>>
<img class="scene-image" src="media/kitchen/eating/eating4.webp"
width="640" height="720" alt="Eating">
<<case 5>>
<img class="scene-image" src="media/kitchen/eating/eating5.webp"
width="640" height="720" alt="Eating">
<</switch>>
<</nobr>>
<<link "Finish">><<goto setup.getPlayerKitchenPassage()>><</link>><<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>I should keep myself active. It might help me feel less helpless out here.<</say>>\
<<nobr>>
<<if setup.hasDoneHulaToday()>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="You have already practised Hula today.">Hula</span>
<<else>>
<<link "Hula">><<run setup.completeDailyHula()>><<goto "Hula">><</link>>
<</if>><br>
<<link "Different kind of exercise...">>
<<run setup.completeHomeMasturbation()>><<run UIBar.update()>>
<<goto setup.getHomeMasturbationDestination()>>
<</link>><br>
<<link "Return">><<goto setup.getPlayerBedroomPassage()>><</link>>
<</nobr>><<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>All right. Keep moving... I can do this!<</say>>\
<<nobr>>
<<switch random(1, 4)>>
<<case 1>>
<video src="media/myroom/exercise/1.mp4" autoplay loop controls></video>
<<case 2>>
<video src="media/myroom/exercise/2.mp4" autoplay loop controls></video>
<<case 3>>
<video src="media/myroom/exercise/3.mp4" autoplay loop controls></video>
<<case 4>>
<video src="media/myroom/exercise/4.mp4" autoplay loop controls></video>
<<default>>
<video src="media/myroom/exercise/1.mp4" autoplay loop controls></video>
<</switch>>
<</nobr>>
<<if $hulaLastGain > 0>>
<p class="gym-stat-gain"><strong>Agility +1</strong></p>
<<else>>
<p class="gym-stat-gain"><strong>Agility is already at its maximum.</strong></p>
<</if>>
[[Finish->Exercise]]<p>The shared kitchen is small and battered, with just enough working equipment to prepare a meal.</p>\
<img class="scene-image" src="media/kitchen/kitchen.jpg">
<<nobr>>
<<if setup.canPerformDayPhaseAction("cookMeal")>>
<<link "Cook Meal" "Cooking">><<run setup.advanceDayPhasesForAction("cookMeal")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('cookMeal')">Cook Meal</span>
<</if>><br>
<<if setup.canPerformDayPhaseAction("dishes")>>
<<link "Do dishes" "Dishes">><<run setup.advanceDayPhasesForAction("dishes")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('dishes')">Do dishes</span>
<</if>><br>
[[Hall->Slums Home]]
<</nobr>><<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>I need this...<</say>>\
<<nobr>>
<<switch random(1, 6)>>
<<case 1>>
<video src="media/myroom/exercise/masturbate1.mp4" autoplay loop controls></video>
<<case 2>>
<video src="media/myroom/exercise/masturbate2.mp4" autoplay loop controls></video>
<<case 3>>
<video src="media/myroom/exercise/masturbate3.mp4" autoplay loop controls></video>
<<case 4>>
<video src="media/myroom/exercise/masturbate4.mp4" autoplay loop controls></video>
<<case 5>>
<video src="media/myroom/exercise/masturbate5.mp4" autoplay loop controls></video>
<<case 6>>
<video src="media/myroom/exercise/masturbate6.mp4" autoplay loop controls></video>
<<default>>
<video src="media/myroom/exercise/masturbate1.mp4" autoplay loop controls></video>
<</switch>>
<</nobr>>
<<if $masturbationConstitutionResult is "gained">>
<p class="gym-stat-gain"><strong>Constitution +1</strong></p>
<<elseif $masturbationConstitutionResult is "maximum">>
<p class="gym-stat-gain"><strong>Constitution is already at its maximum.</strong></p>
<<else>>
<p class="gym-stat-gain"><strong>You have already gained Constitution from this today.</strong></p>
<</if>>
[[Finish->Exercise]]<<nobr>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>So... this is me now. New city, new home, new life.<</say>>
<img class="mirror-portrait-image" @src="setup.getMcPortrait()" data-mc-portrait alt="MC looking in the mirror">
<<linkreplace "Undress">>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">><<print setup.getMirrorBodyThought("breastSize")>><</say>>
<img class="mirror-body-image" @src="setup.getBodyCosmeticImage('breastSize')" alt="MC's breasts">
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">><<print setup.getPubicHairThought()>><</say>>
<img class="mirror-body-image" @src="setup.getPubicHairImage()" alt="MC's pussy">
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">><<print setup.getMirrorBodyThought("assSize")>><</say>>
<img class="mirror-body-image" @src="setup.getBodyCosmeticImage('assSize')" alt="MC's ass">
<</linkreplace>><br>
[[Shave]]<br>
<<link "Return">><<goto setup.getPlayerBathroomPassage()>><</link>>
<</nobr>><<nobr>>
<h2>Shave</h2>
<p>You prepare your razor and decide how much hair you want to remove. A longer style will only become available after it grows naturally.</p>
<div id="shave-ui">
<<shaveMenu>>
</div>
[[Return->Mirror]]
<</nobr>><p>Your rented room is modest, but it is the first space in Suns End that belongs to you.</p>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Home sweet home... more or less.<</say>>\
<img class="scene-image" src="media/myroom/myroom.jpg">
[[Sofa]]
[[Wardrobe]]
[[Equipment]]
[[Exercise]]
[[Hall->Slums Home]]<p>You lie down for a short nap, hoping to quiet your thoughts for a while.</p>\
<<nobr>>
<<switch random(1, 2)>>
<<case 1>>
<img class="scene-image" src="media/myroom/sleep/napping/nap1.jpg" width="500" height="500">
<<case 2>>
<img class="scene-image" src="media/myroom/sleep/napping/nap2.jpg" width="500" height="500">
<<default>>
<img class="scene-image" src="media/myroom/sleep/napping/nap1.jpg" width="500" height="500">
<</switch>>
<</nobr>>\
<<nobr>>
<<if setup.shouldArthurPeep()>>
[[Wake up->Peeping]]
<<else>>
[[Wake up->Sofa]]
<</if>>
<</nobr>><p>You remain asleep and unaware as Arthur stands over you. He presses his cock against your resting face, tapping it over your cheek and lips before taking advantage of your unguarded mouth—or simply using your sleeping features as the place where he finishes.</p>\
<<if setup.isRentUnpaidForArthur()>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Can't cover the rent? Then stay asleep and let me take something else from that pretty face.<</say>>\
<<else>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Rent paid on time, and I still get to have a little fun with that pretty sleeping face. You're a generous tenant.<</say>>\
<</if>>
<<nobr>>
<<set $peepingVideo to setup.pickPeepingVideo()>>
<video @src="$peepingVideo" autoplay loop controls></video>
<</nobr>>
<<nobr>>
<<link "Stay still..." "Peeping Continued">><<run setup.applyPassivePeepingConsequences()>><</link>><br>
<<link "Wake and freak out..." "Peeping Freakout">><<run setup.adjustCorruption(2)>><</link>>
<</nobr>><<run UIBar.update()>>
<<nobr>>
<<if !$peepingVideo>><<set $peepingVideo to setup.pickPeepingVideo()>><</if>>
<p>Sleep keeps your body slack and your face unguarded while Arthur continues rubbing his cock over your lips and cheek, pushing into your mouth when it parts or leaving his release across your sleeping features.</p>
<<if setup.isRentUnpaidForArthur()>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Keep sleeping. If you can't give me the rent, this face can still make itself useful.<</say>>
<<else>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>That's it... sleep through it. Paying the rent doesn't mean I can't enjoy my favourite tenant.<</say>>
<</if>>
<video @src="$peepingVideo" autoplay loop controls></video>
<</nobr>>
[[Return->Sofa]]<<run setup.adjustDominance(1)>><<run UIBar.update()>>
<<nobr>>
<img class="scene-image" src="media/myroom/sleep/napping/yelling1.webp" alt="">
<<switch random(1, 3)>>
<<case 1>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Arthur! Was your cock on my face while I was asleep?!<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Calm down. You were sleeping so peacefully that I thought we could both have some fun.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I was unconscious, you disgusting creep! Get out!<</say>>
<<case 2>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Did you put that in my mouth while I was sleeping?!<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>You barely stirred. Don't make a crisis out of a little private entertainment.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You used me while I couldn't even wake up! Stay away from me!<</say>>
<<case 3>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Get away from me! You were using my face while I slept!<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Fine. No need to scream—the fun is already over.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Then get out and never come near me when I'm asleep again!<</say>>
<</switch>>
<</nobr>>
[[Return->Sofa]]<p>You let the hot water wash away the grime of the district.</p>\
<<nobr>>
<<switch random(1, 3)>>
<<case 1>>
<video src="media/bathroom/shower1.mp4" autoplay loop controls></video>
<<case 2>>
<video src="media/bathroom/shower2.mp4" autoplay loop controls></video>
<<case 3>>
<video src="media/bathroom/shower3.mp4" autoplay loop controls></video>
<<default>>
<video src="media/bathroom/shower1.mp4" autoplay loop controls></video>
<</switch>>
<</nobr>>
<<link "Return">><<goto setup.getPlayerBathroomPassage()>><</link>><<nobr>>
<h2>Shower</h2>
<p>Unaware that you are being watched, you relax beneath the hot water and continue washing.</p>
<video src="media/bathroom/peeping.mp4" autoplay loop muted controls playsinline></video>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Look at that young, sexy body... and she has no idea I'm watching.<</say>>
[[Finish->Bathroom]]
<</nobr>><<run setup.soberUp()>><<run setup.advanceGameDay()>><<run UIBar.update()>>
<<set _arthurSleepPeeping to setup.shouldArthurPeepDuringSleep()>>
<<if _arthurSleepPeeping>>
<p>You sink into a deep sleep, unaware of the door quietly opening. Arthur approaches the bed, exposes himself, and presses his cock against your sleeping face. Whether he taps it over your lips, slips into your unresisting mouth, or finishes across your features, you remain unconscious throughout.</p>\
<<if setup.isRentUnpaidForArthur()>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>No rent this week, so this is how you'll make it up to me. Keep sleeping and take it.<</say>>\
<<else>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>You paid what you owed. Now your landlord gets to have some harmless fun with his sleeping tenant.<</say>>\
<</if>>
<<nobr>>
<<set $peepingVideo to setup.pickPeepingVideo()>>
<video @src="$peepingVideo" autoplay loop controls></video>
<</nobr>>
<<link "Hard asleep..." "Arthur Sleep Peeping Continued">><<run setup.applyPassivePeepingConsequences()>><</link>>
<<else>>
<p>You settle in for the night. Whatever tomorrow brings, you need the rest.</p>\
<<nobr>>
<<switch random(1, 5)>>
<<case 1>><img class="scene-image" src="media/myroom/sleep/sleeping/1.webp">
<<case 2>><img class="scene-image" src="media/myroom/sleep/sleeping/2.webp">
<<case 3>><img class="scene-image" src="media/myroom/sleep/sleeping/3.webp">
<<case 4>><img class="scene-image" src="media/myroom/sleep/sleeping/4.webp">
<<case 5>><img class="scene-image" src="media/myroom/sleep/sleeping/5.webp">
<<default>><img class="scene-image" src="media/myroom/sleep/sleeping/1.webp">
<</switch>>
<</nobr>>
[[Wake up->Sofa]]
<</if>><<run UIBar.update()>>
<<nobr>>
<<if setup.isRentUnpaidForArthur()>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Still asleep... good. That settles a little of what you owe me.<</say>>
<<else>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Still asleep... good. Rent paid and a little fun besides—what a perfect arrangement.<</say>>
<</if>>
<p>Arthur leaves your sleeping face behind and slips quietly out of the room. By the time you begin to stir, there is no sign of him beyond the lingering evidence of what he did.</p>
[[Wake up->Sofa]]
<</nobr>><p>The narrow hall connects the rooms of the residence you share with Arthur.</p>\
<img class="scene-image" src="media/slumshome/hall.jpg">
<<nobr>>
[[My room]]<br>
[[Arthur's room]]<br>
[[Bathroom]]<br>
[[Kitchen]]<br>
<<if setup.canPerformDayPhaseAction("cleanUp")>>
<<link "Try to clean up" "Try to clean up">><<run setup.advanceDayPhasesForAction("cleanUp")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('cleanUp')">Try to clean up</span>
<</if>><br>
<<if setup.isDressedForOutside()>>
[[Outside->Slums]]
<<else>>
<span class="passage-link-disabled" aria-disabled="true">Outside</span>
<p class="table-order-error">You need to put on an outfit and shoes before going outside.</p>
<</if>>
<</nobr>><<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>The sofa is not much, but I can finally sit down for a while.<</say>>
<<nobr>>
<<if setup.canSleepNow()>>
[[Sleep]]
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getSleepLockMessage()">Sleep</span>
<</if>><br>
<<if setup.canPerformDayPhaseAction("nap")>>
<<link "Nap" "Nap">><<run setup.advanceDayPhasesForAction("nap")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('nap')">Nap</span>
<</if>><br>
<<if setup.canNapUntilNight()>><<link "Nap until Night" "Nap">><<run setup.advanceToNight()>><</link>><br><</if>>
[[Stand up->My room]]
<</nobr>><<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>If I work through the worst of this mess, at least the rent will hurt a little less.<</say>>\
<<nobr>>
<<switch random(1, 7)>>
<<case 1>>
<video src="media/slumshome/cleaning/cleaning1.mp4" autoplay loop controls width="640" height="720"></video>
<<case 2>>
<video src="media/slumshome/cleaning/cleaning2.mp4" autoplay loop controls width="640" height="720"></video>
<<case 3>>
<video src="media/slumshome/cleaning/cleaning3.mp4" autoplay loop controls width="640" height="720"></video>
<<case 4>>
<video src="media/slumshome/cleaning/cleaning4.mp4" autoplay loop controls width="640" height="720"></video>
<<case 5>>
<img class="scene-image" src="media/slumshome/cleaning/cleaning5.gif" width="640" height="720">
<<case 6>>
<img class="scene-image" src="media/slumshome/cleaning/cleaning6.gif" width="640" height="720">
<<case 7>>
<img class="scene-image" src="media/slumshome/cleaning/cleaning7.gif" width="640" height="720">
<<default>>
<video src="media/slumshome/cleaning/cleaning1.mp4" autoplay loop controls width="640" height="720"></video>
<</switch>>
<</nobr>>
<<if not $cleaningcooldown>>\
<<set $cleaningcooldown to true>>\
<<run setup.reduceRentDue(50)>>\
<<link "Finish">><<goto setup.prepareArthurCleaningEncounter().destination>><</link>>\
<<else>>\
<<link "Finish">><<goto setup.prepareArthurCleaningEncounter().destination>><</link>>\
<</if>>\<<set _arthurCleaningEncounter to setup.getArthurCleaningEncounter()>>
<<nobr>>
<h2>An attentive landlord</h2>
<img class="scene-image" src="media/slumshome/cleaning/looking1.webp" alt="Arthur watching the main character clean the apartment">
<p>You become aware of Arthur standing nearby while you clean. He makes no effort to help; he simply watches you work with an attention that leaves you wondering what has caught his interest.</p>
<<say $mcname setup.getMcPortrait() "jane">>Why are you staring at me like that?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Don't worry about it. Keep cleaning.<</say>>
<<if _arthurCleaningEncounter.escalates>>
<<if _arthurCleaningEncounter.route is "oral">>[[Continue cleaning->Arthur Cleaning Oral Start]]<<else>>[[Continue cleaning->Arthur Cleaning Cunnilingus]]<</if>>
<<else>>
[[Finish cleaning->Slums Home]]
<</if>>
<</nobr>><<nobr>>
<h2>A brazen demand</h2>
<img class="scene-image" src="media/slumshome/cleaning/naked1.webp" alt="The main character finding Arthur naked in front of her while she cleans">
<p>Still on your knees and focused on the floor, you glance up—and freeze. Arthur is standing naked directly in front of your face, slowly stroking his hard cock as though your position had invited him there.</p>
<<say $mcname setup.getMcPortrait() "jane">>Arthur, what the hell are you—<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>You already know. Open your mouth.<</say>>
[[Continue->Arthur Cleaning Oral]]
<</nobr>><<set _arthurCleaningEncounter to setup.getArthurCleaningEncounter()>>
<<nobr>>
<h2>Interrupted work</h2>
<<switch random(1, 3)>>
<<case 1>><img class="scene-image" src="media/slumshome/cleaning/blow1.webp" alt="The main character giving Arthur oral sex while cleaning">
<<case 2>><img class="scene-image" src="media/slumshome/cleaning/blow2.gif" alt="The main character giving Arthur oral sex while cleaning">
<<case 3>><img class="scene-image" src="media/slumshome/cleaning/blow3.gif" alt="The main character giving Arthur oral sex while cleaning">
<</switch>>
<p>Arthur guides himself between your lips before you can gather a protest. With nowhere comfortable to retreat, you brace yourself on the floor and begin sucking him, concentrating on ending his interruption quickly.</p>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>That's better. You look useful down there.<</say>>
<<if _arthurCleaningEncounter.fullSex>>[[Continue->Arthur Cleaning Sex]]<<else>>[[Finish->Arthur Cleaning Encounter Aftermath]]<</if>>
<</nobr>><<set _arthurCleaningEncounter to setup.getArthurCleaningEncounter()>>
<<nobr>>
<h2>Caught unaware</h2>
<img class="scene-image" src="media/slumshome/cleaning/lick1.gif" alt="Arthur surprising the main character while she cleans">
<p>You are bent over your work when Arthur catches you completely unaware. He pushes your clothes aside and presses his mouth between your thighs so suddenly that surprise steals the protest from your lips.</p>
<<say $mcname setup.getMcPortrait() "jane">>Fuck—Arthur! You could have warned me!<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Then it wouldn't have been a surprise.<</say>>
<<if _arthurCleaningEncounter.fullSex>>[[Continue->Arthur Cleaning Sex]]<<else>>[[Pull yourself together->Arthur Cleaning Encounter Aftermath]]<</if>>
<</nobr>><<nobr>>
<h2>Cleaning abandoned</h2>
<<switch random(1, 6)>>
<<case 1>><img class="scene-image" src="media/slumshome/cleaning/sex1.webp" alt="Arthur having sex with the main character while she cleans">
<<case 2>><img class="scene-image" src="media/slumshome/cleaning/sex2.webp" alt="Arthur having sex with the main character while she cleans">
<<case 3>><img class="scene-image" src="media/slumshome/cleaning/sex3.gif" alt="Arthur having sex with the main character while she cleans">
<<case 4>><img class="scene-image" src="media/slumshome/cleaning/sex4.gif" alt="Arthur having sex with the main character while she cleans">
<<case 5>><img class="scene-image" src="media/slumshome/cleaning/sex5.gif" alt="Arthur having sex with the main character while she cleans">
<<case 6>><img class="scene-image" src="media/slumshome/cleaning/sex6.webp" alt="Arthur having sex with the main character while she cleans">
<</switch>>
<p>Arthur shifts you across the floor and takes what he came for. Anger flares at his presumption, yet your increasingly submissive instincts answer the rough rhythm before your pride can silence them. Despite yourself, resistance slowly gives way to guilty pleasure.</p>
<<say $mcname setup.getMcPortrait() "jane">>I hate that my body is starting to like this...<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>Your body has better sense than your mouth.<</say>>
[[Finish->Arthur Cleaning Encounter Aftermath]]
<</nobr>><<set _arthurCleaningEffects to setup.completeArthurCleaningSexEncounter()>>
<<nobr>>
<h2>Back to the hall</h2>
<p>Once Arthur is satisfied, he leaves you to straighten your clothes and recover your breath. The cleaning has lost whatever rhythm it had, so you gather your things and return to the hall.</p>
<<if _arthurCleaningEffects.dispositionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--disposition stat-change-confirmation--decrease"><strong>Disposition <<print _arthurCleaningEffects.dispositionChange>></strong></p><</if>>
<<if _arthurCleaningEffects.corruptionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--corruption stat-change-confirmation--increase"><strong>Corruption +<<print _arthurCleaningEffects.corruptionChange>></strong></p><</if>>
[[Return to the hall->Slums Home]]
<</nobr>><h2>Wardrobe</h2>
<<link "Back">><<goto setup.getPlayerBedroomPassage()>><</link>>
<div id="wardrobe-ui">
<<wardrobeUI "outfits">>
</div><h2>Equipment</h2>
<<link "Back">><<goto setup.getPlayerBedroomPassage()>><</link>>
<div id="combat-loadout-ui"><<combatEquipmentUI>></div><<nobr>>
<<run setup.beginIrineApproach()>>
<h2>A quiet proposition</h2>
<p>As your work at the Bar comes to an end, a woman you do not recognize approaches and waits until she has your attention.</p>
<<say "Irine" "media/characters/irine.jpg" "irine">>Could we talk somewhere a little quieter?<</say>>
<<say $mcname setup.getMcPortrait() "jane">>All right. What is this about?<</say>>
<p>You follow her to an unoccupied table. She sits opposite you, composed and businesslike despite the noise filling the Bar.</p>
<<say "Irine" "media/characters/irine.jpg" "irine">>My name is Irine. I work as an agent for a private collector. My client is looking for certain artifacts to add to his collection, and the pay is good. If you are willing to consider the job, I can tell you more.<</say>>
[[Hear her out->Irine Artifact Offer]]<br>
<<link "Refuse">><<run setup.refuseIrineOffer()>><<goto "Irine Offer Refused">><</link>>
<</nobr>><<nobr>>
<h2>The artifact</h2>
<img class="scene-image" src="media/characters/irine.jpg" alt="Irine, a collector's agent">
<<say "Irine" "media/characters/irine.jpg" "irine">>There is a particular artifact somewhere here in the Slums. My client wants it recovered intact.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>I have gathered what information I can and sent several people after it already. None have made useful progress. I need more eyes searching.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Bring it to me in one piece, and I will pay you c2000. Payment comes only after delivery.<</say>>
<<say $mcname setup.getMcPortrait() "thought">>Two thousand credits... that kind of money could actually help me escape this shithole.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Now that you know the terms, will you take the job?<</say>>
<<link "Accept the job">><<run setup.acceptIrineArtifactQuest()>><<goto "Irine Offer Accepted">><</link>><br>
<<link "Refuse">><<run setup.refuseIrineOffer()>><<goto "Irine Offer Refused">><</link>>
<</nobr>><<nobr>>
<h2>A collector's job</h2>
<<say $mcname setup.getMcPortrait() "jane">>I'll look for it. Send me everything you have about the artifact, and I will see what I can find.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Good. I will forward the information. Remember: my client only pays for the artifact in one piece.<</say>>
[[Continue->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<h2>Not yet</h2>
<<say $mcname setup.getMcPortrait() "jane">>No. I am not ready to take on something like that.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Very well. If your circumstances change, perhaps we will speak again.<</say>>
[[Return->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<h2>Look for the artifact</h2>
<<if setup.canSearchForIrineArtifact()>>
<<set _artifactQuest to setup.ensureMainQuestState()>>
<<set _artifactStage to setup.getMainQuestArtifactStage()>>
<div class="main-quest-tracker">
<div class="main-quest-tracker__orbit" aria-label="Artifact search progress">
<div class="main-quest-tracker__artifact">
<img src="media/mainquest/artifact/artifactfragment.jpg" alt="Obscured image of the sought artifact">
<span>Target<br>Artifact</span>
</div>
<<for _artifactStageIndex = 1; _artifactStageIndex <= setup.mainQuestArtifactStages.length; _artifactStageIndex++>>
<<set _artifactStageData to setup.mainQuestArtifactStages[_artifactStageIndex - 1]>>
<<set _artifactNodeState to _artifactStageIndex < _artifactQuest.artifactStage ? "is-complete" : (_artifactStageIndex is _artifactQuest.artifactStage ? "is-current" : "is-locked")>>
<div @class="'main-quest-tracker__stage main-quest-tracker__stage--' + _artifactStageIndex + ' ' + _artifactNodeState" @title="_artifactStageData.name">
<strong><<print _artifactStageData.number>></strong>
<span><<print _artifactStageData.name>></span>
</div>
<</for>>
</div>
<section class="main-quest-tracker__briefing">
<header>
<span>Current stage</span>
<strong>Stage <<print _artifactStage.number>>: <<print _artifactStage.name>></strong>
</header>
<p><<print _artifactStage.description>></p>
<<if _artifactQuest.artifactLastOutcome is "failed-hunt">>
<p class="main-quest-tracker__notice">The lead goes cold. You need to reconsider the information before trying again.</p>
<<elseif _artifactQuest.artifactLastOutcome is "defeated">>
<<set _artifactAmbusher to setup.getMainQuestArtifactAmbusher()>>
<p class="main-quest-tracker__notice main-quest-tracker__notice--danger">The <<print _artifactAmbusher.name>> drove you away. The hunt must begin again.</p>
<</if>>
<div class="main-quest-tracker__action">
<<if setup.canPerformDayPhaseAction("artifactSearch")>>
<<link _artifactStage.action>>
<<set _artifactProgress to setup.performMainQuestArtifactStage()>>
<<if _artifactProgress.ok>><<goto _artifactProgress.destination>><</if>>
<</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="It is too late to start this stage today."><<print _artifactStage.action>></span>
<</if>>
</div>
</section>
</div>
<<elseif setup.hasRecoveredIrineArtifact()>>
<p>The artifact is safely in your possession. Irine is waiting at the "Vested Interest" Bar.</p>
<<else>>
<p class="table-order-error">You have no information that would let you begin this search.</p>
<</if>>
[[Return->Slums]]
<</nobr>><<nobr>>
<h2>The artifact</h2>
<p>Your search finally leads into a forgotten corner of the Slums. Beneath layers of dust and discarded machinery, something catches the light.</p>
<img class="scene-image" src="media/mainquest/artifact/artifactfragment.jpg" alt="The recovered artifact fragment">
<<say $mcname setup.getMcPortrait() "thought">>That has to be it. I should take it before somebody else finds this place.<</say>>
[[Take the artifact->Artifact Ambush]]
<</nobr>><<nobr>>
<<set _artifactAmbusher to setup.getMainQuestArtifactAmbusher()>>
<h2>Ambushed</h2>
<p>Your fingers are inches from the fragment when a scrape of metal sounds behind you. A heavily armed man steps out of the shadows and plants himself between you and the only exit.</p>
<<if _artifactAmbusher.image>><img class="scene-image" @src="_artifactAmbusher.image" @alt="_artifactAmbusher.name + ' blocking the exit'"><</if>>
<<say _artifactAmbusher.name _artifactAmbusher.image "criminal">>Take your hand off that fragment. It belongs to people far above your station.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I found it, and I'm leaving with it. Move.<</say>>
<<say _artifactAmbusher.name _artifactAmbusher.image "criminal">>Wrong answer. Now I take the artifact—and leave you here with the rest of the trash.<</say>>
<<link "Fight">><<startFight _artifactAmbusher.name "Artifact Hunt Failed" "main-quest-artifact">><</link>>
<</nobr>><<nobr>>
<<run setup.resetArtifactHuntAfterDefeat()>>
<<set _artifactAmbusher to setup.getMainQuestArtifactAmbusher()>>
<h2>Driven away</h2>
<p>The <<print _artifactAmbusher.name>> leaves you bruised and empty-handed. By the time you recover, both he and the artifact are gone. You will have to retrace the final lead and hunt for it again.</p>
[[Continue->Look for the Artifact]]
<</nobr>><<nobr>>
<h2>Meet Irine</h2>
<<set _artifactDelivery to setup.completeIrineArtifactQuest()>>
<<if _artifactDelivery.ok>>
<img class="scene-image" src="media/characters/irine.jpg" alt="Irine, the collector's agent">
<p>You find Irine at a secluded table in the "Vested Interest." She watches you approach, but her reserved expression does not change.</p>
<<say $mcname setup.getMcPortrait() "jane">>I found the artifact—and I kept it in one piece.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>You found it? Several people have made that claim already. Every one of them brought me a worthless fake and hoped I would transfer the credits before noticing.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Show it to me.<</say>>
<p>You place the fragment carefully on the table. Irine turns it beneath the light, studying its surface and every unusual marking. Her scepticism slowly gives way to recognition; then her eyes light up.</p>
<img class="scene-image" src="media/mainquest/artifact/artifactfragment.jpg" alt="Irine examining the recovered artifact fragment">
<<say "Irine" "media/characters/irine.jpg" "irine">>Finally. Someone actually found it.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>You did excellent work. I will notify my client that the artifact is in our possession. The agreed c2000 has been transferred to your account.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Good doing business with you.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Likewise. Spend some time around the Bar. I may have more work for someone who can actually deliver results.<</say>>
<p class="gym-stat-gain"><strong>Credits +c<<print _artifactDelivery.reward>></strong></p>
<<elseif _artifactDelivery.reason is "already-completed">>
<img class="scene-image" src="media/characters/irine.jpg" alt="Irine, the collector's agent">
<p>You find Irine at her usual place in the Bar and take the seat opposite her.</p>
<<say $mcname setup.getMcPortrait() "jane">>Do you have any more work available?<</say>>
<<if setup.canOfferSecondIrineArtifactQuest()>>
<<say "Irine" "media/characters/irine.jpg" "irine">>As a matter of fact, I do. The object you recovered was not the artifact itself. It was only one fragment of it.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Neither my client nor I know how many fragments will be needed, but I have acquired information concerning a second piece.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>So that little fragment is part of something larger? What would the next job involve?<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>You would find another fragment. Fortunately for you, this one is also somewhere in the Slums. Accept, and I will send you everything I know. The payment is c4000 upon delivery.<</say>>
<<link "Accept the job">>
<<set _secondArtifactDecision to setup.acceptSecondIrineArtifactQuest()>>
<<if _secondArtifactDecision.ok>><<goto "Irine Second Artifact Accepted">><</if>>
<</link>><br>
<<link "Refuse">>
<<set _secondArtifactDecision to setup.refuseSecondIrineArtifactQuest()>>
<<if _secondArtifactDecision.ok>><<goto "Irine Second Artifact Refused">><</if>>
<</link>>
<<else>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Nothing so far. Drop by from time to time and ask again. If my client needs anything else recovered, I will let you know.<</say>>
<</if>>
<<else>>
<p class="table-order-error">You do not have the artifact Irine requested.</p>
<</if>>
<<if !(_artifactDelivery.reason is "already-completed" && setup.canOfferSecondIrineArtifactQuest())>>
[[Return->"Vested Interest" Bar]]
<</if>>
<</nobr>><<nobr>>
<h2>A Part of the Puzzle</h2>
<img class="scene-image" src="media/characters/irine.jpg" alt="Irine, the collector's agent">
<<say $mcname setup.getMcPortrait() "jane">>Send me the information. I'll find the second fragment.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>I expected you might. The files are on their way now. Bring the fragment back intact, and c4000 will be yours.<</say>>
<p><strong>Main Quest started: A Part of the Puzzle</strong></p>
[[Return->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<h2>Not yet</h2>
<img class="scene-image" src="media/characters/irine.jpg" alt="Irine, the collector's agent">
<<say $mcname setup.getMcPortrait() "jane">>Not this time. I have other things to deal with first.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Very well. Ask me again later if you reconsider.<</say>>
[[Return->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<h2>Meet Irine</h2>
<img class="scene-image" src="media/characters/irine.jpg" alt="Irine, the collector's agent">
<<set _secondArtifactDelivery to setup.completeSecondIrineArtifactQuest()>>
<<if _secondArtifactDelivery.ok>>
<<say "Irine" "media/characters/irine.jpg" "irine">>You are back? What have you got for me?<</say>>
<p>You produce the second fragment and place it in Irine's waiting hand. She turns it beneath the light, carefully examining its markings and fractured edges.</p>
<img class="scene-image" src="media/mainquest/artifact/artifactfragment.jpg" alt="Irine examining the second artifact fragment">
<<say "Irine" "media/characters/irine.jpg" "irine">>This is genuine. It is another fragment of the artifact my client is seeking.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I'm happy to keep delivering results.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>I will take it to my client now. If these fragments truly belong to something larger, I will negotiate a better arrangement and force him to pay more—for both of us.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>That sounds like a good plan to me.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Find me again next week. I should have more information by then.<</say>>
<p class="gym-stat-gain"><strong>Credits +c<<print _secondArtifactDelivery.reward>></strong></p>
<p><strong>Main Quest completed: A Part of the Puzzle</strong></p>
<<else>>
<p>The second fragment has already been delivered. Irine is waiting for news from her client.</p>
<</if>>
[[Return->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<h2>Meet Irine</h2>
<img class="scene-image" src="media/characters/irine.jpg" alt="Irine, the collector's agent">
<<if setup.canStartMovingUpQuest()>>
<<run setup.startMovingUpQuest()>>
<<say $mcname setup.getMcPortrait() "jane">>Do you have something for me?<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Good news: my client agreed to the new arrangement, and I have information about a third fragment. The bad news is that it is somewhere in the middle section of Suns End, not here in the Slums.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I've never been to the middle city.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Few people in the Slums can afford to go there. We will need a base of operations, and I have already scouted one—an old warehouse currently up for sale.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>I will cover half the cost. You need to raise c15000 for your share. Once we acquire it, you will have access to the middle section of the city.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Fifteen thousand is a lot of credits. I'll raise it, but it may take some time.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>That is fine. The warehouse has been sitting unsold for some time. I doubt it will disappear before you are ready.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Thank you, Irine. I'll come back when I have the credits.<</say>>
<p><strong>Main Quest started: Moving Up</strong></p>
[[Return->"Vested Interest" Bar]]
<<elseif setup.isMovingUpQuestActive()>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Do you have the c15000 for your share of the warehouse yet?<</say>>
<<if setup.canAffordMovingUpShare()>>
[[Yes->Irine Warehouse Purchase]]
<<else>>
<<linkreplace "No">>
<<say $mcname setup.getMcPortrait() "jane">>Not yet. I still need more credits.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Then keep working. Come back when you have the full c15000.<</say>>
[[Return->"Vested Interest" Bar]]
<</linkreplace>>
<</if>>
<<elseif setup.hasPaidWarehouseShare() && !setup.hasWarehouseAccess()>>
<<goto "Irine Warehouse Departure">>
<<else>>
<p>You find Irine at her usual place in the Bar and take the seat opposite her.</p>
<<say $mcname setup.getMcPortrait() "jane">>Do you have any more work available?<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Nothing so far. Drop by from time to time and ask again. If my client needs anything else recovered, I will let you know.<</say>>
[[Return->"Vested Interest" Bar]]
<</if>>
<</nobr>><<nobr>>
<h2>Moving Up</h2>
<p class="main-quest-tracker__continuation"><strong>To be continued...</strong></p>
[[Return->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<h2>Purchase the warehouse</h2>
<img class="scene-image" src="media/characters/irine.jpg" alt="Irine, the collector's agent">
<<say "Irine" "media/characters/irine.jpg" "irine">>Then transfer your c15000 share to me. I will combine it with mine and handle the purchase.<</say>>
<<set _warehousePayment to setup.continueMovingUpQuest()>>
<<if _warehousePayment.ok>>
<<if !_warehousePayment.alreadyPaid>><p>The transfer clears. <strong>c15000</strong> leaves your account and Irine checks the confirmation before putting her terminal away.</p><</if>>
<<say "Irine" "media/characters/irine.jpg" "irine">>That settles it. I will handle the remaining paperwork. Are you ready to come with me and see what we bought?<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>The maglev costs c50 each way. Keep enough for the return journey.<</say>>
<<if setup.canLeaveForWarehouseWithIrine()>>
[[I am ready->Maglev Ride With Irine]]<br>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getMaglevTravelLockMessage(true)">I am ready</span><br>
<</if>>
[[I'm not ready yet->"Vested Interest" Bar]]
<<else>>
<p class="table-order-error">The transfer could not be completed.</p>
[[Return->Meet Irine After Second Fragment]]
<</if>>
<</nobr>><<nobr>>
<h2>Meet Irine</h2>
<img class="scene-image" src="media/characters/irine.jpg" alt="Irine, the collector's agent">
<<say "Irine" "media/characters/irine.jpg" "irine">>The warehouse is ours and the paperwork is finished. Are you ready to go?<</say>>
<<if setup.canLeaveForWarehouseWithIrine()>>
[[I am ready->Maglev Ride With Irine]]<br>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getMaglevTravelLockMessage(true)">I am ready</span><br>
<</if>>
[[I'm not ready yet->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<<set _warehouseTrip to setup.beginIrineWarehouseTrip()>>
<<if !_warehouseTrip.ok>><<goto "Irine Warehouse Departure">><</if>>
<h2>Across Suns End</h2>
<p>You and Irine leave the Bar and make your way to the maglev station. A c50 fare opens the platform gate, and minutes later the train carries you out of the Slums.</p>
<img class="scene-image" src="media/locations/middlecity/middlecity.jpg" alt="The middle section of Suns End">
<<say $mcname setup.getMcPortrait() "thought">>The city changes almost block by block. The buildings are cleaner here—maintained, even. Nothing is sagging, leaking, or threatening to collapse on somebody.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Welcome to the middle city. Try not to look too impressed.<</say>>
<p>The maglev slows at a broad station surrounded by orderly towers. You disembark beside Irine and follow her deeper into the district.</p>
[[Follow Irine->Warehouse Arrival]]
<</nobr>><<nobr>>
<h2>The old warehouse</h2>
<img class="scene-image" @src="setup.getWarehouseMainHallImage()" alt="An old warehouse in the middle city">
<<say $mcname setup.getMcPortrait() "jane">>It is large, I'll give it that. Not exactly promising, though.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>What did you expect for something this cheap?<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Cheap? It cost c30000.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Well, welcome to the big, wide city of Suns End, girl.<</say>>
[[Go inside->Warehouse First Entry]]
<</nobr>><<nobr>>
<h2>A new base</h2>
<img class="scene-image" @src="setup.getWarehouseMainHallImage()" alt="The neglected interior of the old warehouse">
<p>Inside, dust coats every surface. Abandoned containers, damaged shelving, and years of neglect turn the spacious building into a maze of work waiting to be done.</p>
<<say "Irine" "media/characters/irine.jpg" "irine">>We are going to have to clean all of this up.<</say>>
<<say $mcname setup.getMcPortrait() "thought">>The story of my life...<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>No work, no pay.<</say>>
<p>Irine laughs, then helps you inspect the back of the building. You find two small rooms that can be cleared and made suitable for sleeping. The arrangement will be rudimentary at first, but it will do.</p>
<<say "Irine" "media/characters/irine.jpg" "irine">>Let us settle in for now. We will continue our main goal later.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Agreed. First, we make this place livable.<</say>>
<<link "Settle in" "Warehouse">><<run setup.completeWarehouseArrival()>><</link>>
<</nobr>><<nobr>>
<h2>The first night at home</h2>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/bedroom.jpg" alt="Melisa's bedroom">
<p>You settle into bed beside Melisa. She pulls you close, and for the first time since coming to Suns End, you fall asleep without wondering whether someone might enter your room.</p>
[[Wake up beside Melisa->Melisa Move In Morning]]
<</nobr>><<nobr>>
<<run setup.completeMelisaMoveInMorning()>><<run UIBar.update()>>
<h2>Morning coffee</h2>
<img class="scene-image" src="media/locations/melisasapartment/kitchen/kitchen.webp" alt="Melisa's kitchen">
<p>The next morning, you sit together over coffee in the kitchen. The safety of the apartment feels almost unreal, but one practical concern refuses to leave your mind.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Melisa... how much do I need to pay you for rent?<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You're my love. You don't have to pay shit.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>But that's exactly why we should split the rent and the housework. I don't want to feel like a burden you're carrying. I want us to feel like partners.<</say>>
<p>Melisa studies your face, ready to refuse again, but the earnestness in your voice gradually wears down her resistance.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Fine. Your part of the rent is c200. I cover the rest, and that's final. We share the work too—cleaning, cooking, whatever needs doing whenever one of us has the time.<</say>>
<p>You rise, throw your arms around her, and hold her tightly.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Thank you. I love you, Melisa.<</say>>
<p>Melisa freezes for one fluttering heartbeat. Then her face lights up, and she covers you in what feels like a thousand delighted kisses.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I love you too.<</say>>
[[Settle into your new home->Melisa Apartment Living Room]]
<</nobr>><<if setup.isPartnerLivingAtWarehouse("melisa")>><<goto "Warehouse">><</if>>
<<if setup.shouldOfferPartnerWarehouseMove("melisa")>><<set $partnerRelocation.partner to "melisa">><<goto "Partner Warehouse Move Conversation">><</if>>
<<nobr>>
<h2>Melisa's apartment</h2>
<p>The living room also serves as the apartment's central hall, connecting every part of the home.</p>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="The living room in Melisa's apartment">
[[Bedroom->Melisa Apartment Bedroom]]<br>
[[Bathroom->Melisa Apartment Bathroom]]<br>
[[Kitchen->Melisa Apartment Kitchen]]<br>
[[Sofa->Melisa Apartment Sofa]]<br>
<<if setup.isDressedForOutside()>>
[[Outside->Slums]]
<<else>>
<span class="passage-link-disabled" aria-disabled="true">Outside</span>
<p class="table-order-error">You need to put on an outfit and shoes before going outside.</p>
<</if>>
<</nobr>><<nobr>>
<h2>Your bedroom</h2>
<p>You now share this room and its bed with Melisa. Your belongings have begun to turn it into a space that belongs to both of you.</p>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/bedroom.jpg" @alt="$mcname + ' and Melisa\'s bedroom'">
[[Bed->Melisa Apartment Bed]]<br>
[[Wardrobe]]<br>
[[Equipment]]<br>
[[Exercise]]<br>
[[Living room->Melisa Apartment Living Room]]
<</nobr>><<nobr>>
<h2>Bed</h2>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/bedroom.jpg" @alt="'The bed shared by ' + $mcname + ' and Melisa'">
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>It still feels strange to call this our bed... but it feels safe.<</say>>
<<if setup.ensureMelisaState().girlfriend>>
<<link "Have sex with Melisa">><<run setup.startMelisaBedroomSex()>><<goto "Melisa Bedroom Sex">><</link>><br>
<</if>>
<<if setup.canSleepNow()>>
[[Sleep->Melisa Apartment Sleep]]
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getSleepLockMessage()">Sleep</span>
<</if>><br>
[[Return->Melisa Apartment Bedroom]]
<</nobr>><<run setup.soberUp()>><<run setup.advanceGameDay()>><<run UIBar.update()>>
<p>You settle in for the night and sleep safely beside Melisa.</p>
<<nobr>>
<<switch random(1, 2)>>
<<case 1>><img class="scene-image" src="media/locations/melisasapartment/bedroom/sleep1.avif" alt="Sleeping beside Melisa">
<<case 2>><img class="scene-image" src="media/locations/melisasapartment/bedroom/sleep2.jpg" alt="Sleeping beside Melisa">
<</switch>>
[[Wake up->Melisa Apartment Bedroom]]
<</nobr>><<nobr>>
<h2>Bathroom</h2>
<p>Melisa's bathroom is clean, private, and far more comfortable than the one you left behind.</p>
<img class="scene-image" src="media/locations/melisasapartment/bathroom/bathroom.jpg" alt="Melisa's bathroom">
<<link "Shower">><<goto setup.getMelisaApartmentShowerDestination()>><</link>><br>
[[Mirror]]<br>
[[Living room->Melisa Apartment Living Room]]
<</nobr>><<nobr>>
<h2>Kitchen</h2>
<p>The kitchen is shared equally now, whether you are preparing food or cleaning up afterward.</p>
<img class="scene-image" src="media/locations/melisasapartment/kitchen/kitchen.webp" alt="Melisa's kitchen">
<<if setup.canPerformDayPhaseAction("cookMeal")>>
<<link "Cook Meal" "Cooking">><<run setup.advanceDayPhasesForAction("cookMeal")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('cookMeal')">Cook Meal</span>
<</if>><br>
<<if setup.canPerformDayPhaseAction("dishes")>>
<<link "Do dishes" "Dishes">><<run setup.advanceDayPhasesForAction("dishes")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('dishes')">Do dishes</span>
<</if>><br>
[[Living room->Melisa Apartment Living Room]]
<</nobr>><<nobr>>
<h2>Living room sofa</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="The sofa in Melisa's living room">
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>I can rest here without worrying about anyone creeping up on me.<</say>>
<<if setup.canPerformDayPhaseAction("nap")>>
<<link "Nap" "Melisa Apartment Nap">><<run setup.advanceDayPhasesForAction("nap")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('nap')">Nap</span>
<</if>><br>
<<if setup.canNapUntilNight()>><<link "Nap until Night" "Melisa Apartment Nap">><<run setup.advanceToNight()>><</link>><br><</if>>
<<if setup.canPerformDayPhaseAction("watchTv")>>
<<link "Watch TV" "Melisa Apartment Watch TV">><<run setup.advanceDayPhasesForAction("watchTv")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('watchTv')">Watch TV</span>
<</if>><br>
[[Stand up->Melisa Apartment Living Room]]
<</nobr>><<nobr>>
<p>You stretch out on the sofa and let yourself drift into a peaceful nap.</p>
<<switch random(1, 2)>>
<<case 1>><img class="scene-image" src="media/myroom/sleep/napping/nap1.jpg" alt="Napping on the sofa">
<<case 2>><img class="scene-image" src="media/myroom/sleep/napping/nap2.jpg" alt="Napping on the sofa">
<</switch>>
<<link "Wake up">>
<<if setup.shouldMelisaKissMcAwake()>><<goto "Melisa Nap Kiss">><<else>><<goto "Melisa Apartment Sofa">><</if>>
<</link>>
<</nobr>><<nobr>>
<h2>A better way to wake up</h2>
<img class="scene-image" src="media/locations/melisasapartment/livingroom/kiss1.jpg" @alt="'Melisa kissing ' + $mcname + ' awake'">
<p>A warm kiss gently pulls you out of sleep. When your eyes open, Melisa is leaning over you with an affectionate smile.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Rise and shine, sleepyhead. Did you have a good nap?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I did... but waking up was even better than the nap.<</say>>
<<link "Return">><<goto setup.getMelisaHomeRoomPassage("sofa")>><</link>>
<</nobr>><<nobr>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>For once, I can choose something other than another Protectorate news loop.<</say>>
<<switch random(1, 4)>>
<<case 1>><img class="scene-image" src="media/arthursroom/tv/tv1.webp" alt="Watching television">
<<case 2>><img class="scene-image" src="media/arthursroom/tv/tv2.webp" alt="Watching television">
<<case 3>><img class="scene-image" src="media/arthursroom/tv/tv3.webp" alt="Watching television">
<<case 4>><img class="scene-image" src="media/arthursroom/tv/tv4.webp" alt="Watching television">
<</switch>>
[[Return->Melisa Apartment Sofa]]
<</nobr>><<nobr>>
<h2>A private moment</h2>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/apartmasturbate.webp" @alt="$mcname + ' masturbating in Melisa\'s apartment'">
<<if $masturbationConstitutionResult is "gained">>
<p class="gym-stat-gain"><strong>Constitution +1</strong></p>
<<elseif $masturbationConstitutionResult is "maximum">>
<p class="gym-stat-gain"><strong>Constitution is already at its maximum.</strong></p>
<<else>>
<p class="gym-stat-gain"><strong>You have already gained Constitution from this today.</strong></p>
<</if>>
<p>You settle onto the bed and slip a hand between your thighs, believing you have enough time alone to satisfy the need building inside you.</p>
[[Continue->Melisa Catches MC Masturbating]]
<</nobr>><<nobr>>
<h2>Caught</h2>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/apartcaught1.webp" @alt="'Melisa catching ' + $mcname + ' masturbating'">
<p>The bedroom door opens before you can cover yourself. Melisa pauses, takes in the sight of your hand between your legs, and smiles.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Do you need a hand with that?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I... wouldn't say no.<</say>>
[[Let Melisa help->Melisa Helps MC Masturbate]]
<</nobr>><<nobr>>
<video src="media/locations/melisasapartment/bedroom/apartcaught2.mp4" autoplay loop muted controls playsinline></video>
<p>Melisa leans in to kiss you while her fingers take over, massaging your clit with steady, practiced pressure.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Next time, ask me, love. I enjoy taking care of you.<</say>>
[[Continue->Melisa Helps MC Finish]]
<</nobr>><<nobr>>
<video src="media/locations/melisasapartment/bedroom/apartcaught3.webm" autoplay loop muted controls playsinline></video>
<p>Melisa keeps touching you until the orgasm breaks through you. When the trembling subsides, she lifts her fingers, slick with your release, and presses them gently between your lips.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Taste yourself.<</say>>
<p>You close your lips around her fingers as she watches with a satisfied smile.</p>
<<link "Finish">><<goto setup.getMelisaHomeRoomPassage("bedroom")>><</link>>
<</nobr>><<nobr>>
<h2>Company in the shower</h2>
<video src="media/locations/melisasapartment/bathroom/showerfun1.mp4" autoplay loop muted controls playsinline></video>
<p>You have barely settled beneath the warm water when Melisa joins you. She pulls you close, and the shower is quickly forgotten as you make out beneath the spray.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You didn't think you were showering without me, did you?<</say>>
[[Continue->Melisa Shower Fun Undress]]
<</nobr>><<nobr>>
<video src="media/locations/melisasapartment/bathroom/showerfun2.mp4" autoplay loop muted controls playsinline></video>
<p>Still kissing her, you begin undressing Melisa and peel away the clothes she had not bothered to remove before following you inside.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>If you're joining me, you're doing it properly.<</say>>
[[Continue->Melisa Shower Fun Oral]]
<</nobr>><<nobr>>
<video src="media/locations/melisasapartment/bathroom/showerfun3.mp4" autoplay loop muted controls playsinline></video>
<p>Once her bottoms are out of the way, you lower yourself and lick Melisa's pussy until her composure begins to crack. She pulls you upright and back beneath the shower, turns you toward the wall, and presses your body against it while her fingers massage your clit from behind.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>My turn. Hold still and let me take care of you.<</say>>
[[Continue->Melisa Shower Fun Squeeze]]
<</nobr>><<nobr>>
<video src="media/locations/melisasapartment/bathroom/showerfun4.mp4" autoplay loop muted controls playsinline></video>
<p>Melisa confidently grips your ass and squeezes hard, holding you exactly where she wants you beneath the running water.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You really do like taking control everywhere.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You say that like you don't love it.<</say>>
[[Continue->Melisa Shower Fun Finish]]
<</nobr>><<nobr>>
<video src="media/locations/melisasapartment/bathroom/showerfun5.mp4" autoplay loop muted controls playsinline></video>
<p>You laugh and switch places with her, wrapping yourself around Melisa from behind and rubbing her clit. The urgency gradually softens into playful touches and shared laughter as you wind down and finally finish showering together.</p>
<<link "Finish showering">><<goto setup.getMelisaHomeRoomPassage("bathroom")>><</link>>
<</nobr>><<nobr>>
<h2>Together in bed</h2>
<<if !$melisaBedroomSex.active>><<run setup.startMelisaBedroomSex()>><</if>>
<div id="melisa-bedroom-sex-ui"><<melisaBedroomSexUI>></div>
<</nobr>><<nobr>>
<h2>Afterward</h2>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/bedroom.jpg" @alt="$mcname + ' and Melisa resting together'">
<p>You remain curled together beneath the sheets, trading soft kisses while your breathing gradually settles.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I love having you here beside me.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I love being here with you.<</say>>
<<if $melisaBedroomSex.relationshipGain > 0>>
<p class="gym-relationship-gain"><strong>Relationship with Melisa +<<print $melisaBedroomSex.relationshipGain>></strong></p>
<</if>>
<<link "Finish">><<goto setup.getMelisaHomeRoomPassage("bedroom")>><</link>>
<</nobr>><<nobr>>
<<set _rescueEnemy to setup.getMelisaContractRescueEnemy()>>
<h2>A contract gone wrong</h2>
<img class="scene-image" src="media/characters/melisa/defeat1.webp" @alt="'Melisa at the mercy of ' + _rescueEnemy.name">
<p>With your own target dealt with, you take a quieter route back through the Slums. A familiar, muffled sound stops you cold. In the shadows ahead, Melisa is on her knees—bruised, disarmed, and held by the <<print _rescueEnemy.name>> she was sent to kill. He forces his exposed cock toward her mouth while she struggles beneath his grip.</p>
<<if $melisaContractRescue.active>>
[[Intervene->Melisa Contract Rescue Confrontation]]<br>
[[Watch what happens...->Melisa Contract Betrayal]]
<<else>>
<p class="table-order-error">This encounter has already been resolved.</p>
[[Continue->"Vested Interest" Bar]]
<</if>>
<</nobr>><<nobr>>
<<set _rescueEnemy to setup.getMelisaContractRescueEnemy()>>
<h2>Intervene</h2>
<img class="scene-image" src="media/characters/melisa/defeat1.webp" @alt="'Melisa being held by ' + _rescueEnemy.name">
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Get away from her! Let her go now, or I swear I'll kill you!<</say>>
<<say _rescueEnemy.name _rescueEnemy.image "criminal">>Look at that—another slut delivered herself to me. Come on, then. Let's see if you fight any better than she did.<</say>>
<<capture _rescueEnemy>>
<<link "Fight">>
<<startFight _rescueEnemy.name "Melisa Contract Double Defeat" "melisa-contract-rescue">>
<</link>>
<</capture>>
<</nobr>><<nobr>>
<h2>Remain hidden</h2>
<img class="scene-image" src="media/characters/melisa/defeat2.webp" alt="Melisa being assaulted">
<p>You remain concealed. Melisa's resistance weakens as the man forces himself deeper into her mouth, never realizing that you are close enough to help.</p>
[[Continue->Melisa Contract Betrayal Continued]]
<</nobr>><<nobr>>
<img class="scene-image" src="media/characters/melisa/defeat3.webp" alt="Melisa being assaulted by her contract target">
<p>He throws Melisa down and forces himself inside her. She endures the assault while you watch from cover, silent and motionless.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Get your disgusting cock out of me! I don't want any part of you inside me!<</say>>
[[Continue->Melisa Contract Betrayal Climax]]
<</nobr>><<nobr>>
<img class="scene-image" src="media/characters/melisa/defeat4.webp" alt="The attacker finishing over Melisa">
<p>When he is finished, he covers Melisa's face with his release and leaves her crumpled on the ground. Only after his footsteps fade do you finally emerge.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Get this vile cum off me... I can't stand the smell of it. Fucking male filth.<</say>>
[[Approach Melisa->Melisa Contract Betrayal Aftermath]]
<</nobr>><<nobr>>
<<set _rescueResult to setup.resolveMelisaContractRescue("watched")>>
<<set _melisaBreakup to setup.shouldMelisaBreakUpAfterContractRescue()>>
<h2>Betrayed</h2>
<img class="scene-image" src="media/characters/melisa/defeat5.webp" alt="Melisa realizing she was abandoned">
<p>Melisa looks up at you through the mess on her face. Confusion gives way to realization, and then to a hurt far deeper than anything her attacker inflicted.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I can still taste that disgusting cock. His cum is drying on my face, and I can smell him all over me... and you were here. You watched him do that to me and did nothing. I trusted you. Don't fucking touch me.<</say>>
<<if _rescueResult.ok>><p class="table-order-error"><strong>Relationship with Melisa -20</strong></p><</if>>
<<if _melisaBreakup>>
[[Face Melisa->Melisa Contract Breakup]]
<<else>>
[[Leave->"Vested Interest" Bar]]
<</if>>
<</nobr>><<nobr>>
<<set _rescueEnemy to setup.getMelisaContractRescueEnemy()>>
<<set _rescueResult to setup.resolveMelisaContractRescue("rescued")>>
<h2>Rescued</h2>
<img class="scene-image" src="media/characters/melisa/melisa.jpg" @alt="'Melisa after being rescued from ' + _rescueEnemy.name">
<p>The <<print _rescueEnemy.name>> collapses and does not rise again. Melisa staggers to her feet, spits on his body, and unleashes every profanity she knows at the dead man.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Rot in hell, you fucking animal! I can still taste that filthy cock and smell him on me. God, I fucking hate men touching me.<</say>>
<p>You pull Melisa into your arms before rage can carry her any farther. She tenses at first, then sinks against you as the fight drains out of her.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I've got you. You're safe now.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Thank you... I knew you wouldn't leave me.<</say>>
<<if _rescueResult.ok>><p class="gym-relationship-gain"><strong>Relationship with Melisa +4</strong></p><</if>>
[[Return together->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<<set _rescueEnemy to setup.getMelisaContractRescueEnemy()>>
<h2>Overpowered</h2>
<img class="scene-image" src="media/characters/melisa/doubledefeat1.webp" alt="The attackers overpowering the two women">
<p>The <<print _rescueEnemy.name>> cuts off your escape and beats you down. Laughing at your failed rescue, he calls an accomplice over. The newcomer forces his cock into your mouth while the first man turns his attention back to Melisa.</p>
<<say _rescueEnemy.name _rescueEnemy.image "criminal">>You ran over here playing the hero, and now you're choking on my friend's cock. Stay on your knees with your useless girlfriend.<</say>>
[[Continue->Melisa Contract Double Defeat Together]]
<</nobr>><<nobr>>
<<set _rescueEnemy to setup.getMelisaContractRescueEnemy()>>
<h2>Helpless together</h2>
<img class="scene-image" src="media/characters/melisa/doubledefeat2.webp" alt="Melisa and the main character trying to comfort each other">
<p>They force you beside Melisa. You cling to each other, trying to offer what little comfort you can while one man abuses her and the other prepares to do the same to you.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I hate your filthy cock! Get it out of me and leave us alone!<</say>>
<<say _rescueEnemy.name _rescueEnemy.image "criminal">>Keep complaining, dyke. Your body still takes cock like any other helpless slut.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Melisa... I'm here. Hold on to me.<</say>>
[[Continue->Melisa Contract Double Defeat MC]]
<</nobr>><<nobr>>
<img class="scene-image" src="media/characters/melisa/doubledefeat3.webp" alt="The accomplice assaulting the main character">
<p>The accomplice forces himself into you and fucks you without mercy. You grit your teeth and keep reaching toward Melisa, refusing to let her think she is alone.</p>
<<say "Accomplice" "" "criminal">>Stop reaching for her, bitch. You came here to save her, and all you managed to do was give me another hole to use.<</say>>
[[Continue->Melisa Contract Double Defeat Continued]]
<</nobr>><<nobr>>
<<set _rescueEnemy to setup.getMelisaContractRescueEnemy()>>
<img class="scene-image" src="media/characters/melisa/doubledefeat4.webp" alt="Both women being assaulted">
<p>The assault continues until your body aches with every movement. Behind you, Melisa is forced back onto her knees, choking as the first man uses her mouth again.</p>
<<say _rescueEnemy.name _rescueEnemy.image "criminal">>Look at your brave girlfriend now—getting fucked while you choke for me. Neither of you is good for anything but this.<</say>>
<<say "Accomplice" "" "criminal">>They wanted to suffer together. Let's make sure they remember getting their wish.<</say>>
[[Continue->Melisa Contract Double Defeat Aftermath]]
<</nobr>><<nobr>>
<<set _rescueResult to setup.resolveMelisaContractRescue("double-defeat")>>
<<set _melisaBreakup to setup.shouldMelisaBreakUpAfterContractRescue()>>
<h2>Aftermath</h2>
<img class="scene-image" src="media/characters/melisa/defeat5.webp" alt="Melisa approaching after the attackers leave">
<p>Spent at last, the men throw both of you onto the ground and walk away laughing. Melisa crawls toward you, exhausted and shaking, her face stained with their release. You hold each other in silence, but neither of you can pretend the failed rescue left your relationship untouched.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You came for me... I know you tried. I just... I can still taste his cock and smell him on my skin. That disgusting cum is still on my face. I hate cocks. I hate everything about them. I can't get any of it out of my head.<</say>>
<<if _rescueResult.ok>><p class="table-order-error"><strong>Relationship with Melisa -4</strong></p><</if>>
<<if _melisaBreakup>>
[[Try to talk to Melisa->Melisa Contract Breakup]]
<<else>>
[[Return together->"Vested Interest" Bar]]
<</if>>
<</nobr>><<nobr>>
<<set _rescueState to setup.ensureMelisaContractRescueState()>>
<<set _breakupResult to setup.completeMelisaBreakupBadEnding()>>
<h2>The breaking point</h2>
<img class="scene-image" src="media/characters/melisa/defeat5.webp" alt="Melisa confronting the main character after the attack">
<<if _rescueState.outcome is "watched">>
<p>The silence between you erupts into a furious argument. You try to explain yourself, but every word only makes Melisa angrier.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Melisa, please! I was scared. I froze—I didn't know what to do!<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You knew exactly what was happening! You stood there and watched while he raped me. I trusted you with my life, and you decided I wasn't worth saving.<</say>>
<<else>>
<p>Pain and shock turn the journey home into a heated argument. You reach for Melisa, desperate to hold together what remains between you, but she recoils.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I tried to save you! We survived this together. Please don't shut me out now.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Don't tell me how I should feel! I can't look at you without reliving every second of it. Whatever we had isn't strong enough to survive this.<</say>>
<</if>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>What are you saying?<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I'm saying we're finished. Pack your things and get out of my apartment. I can't have you near me anymore.<</say>>
<p>The finality in her voice leaves no room for another appeal. By nightfall, you are outside with everything you own and nowhere left to go.</p>
<<if _breakupResult.ok>>[[Continue->Bad Ending - Homeless]]<<else>><p class="table-order-error">The breakup could not be resolved.</p><</if>>
<</nobr>><<nobr>>
<h2>Bad Ending: Homeless</h2>
<p>Without Melisa's home—or anyone else willing to take you in—you begin sleeping in alleys, abandoned corridors, and whatever sheltered corners of the Slums you can find.</p>
<p>It does not take long for homeless men and criminals to recognize how vulnerable you are. They corner you when you are alone, trade scraps and temporary shelter for access to your body, and use you mercilessly whenever refusing is no longer a safe option.</p>
<p>Days blur into one another until the street has taken everything that once made your life your own.</p>
<p class="table-order-error"><strong>BAD ENDING — PROPERTY OF THE STREETS</strong></p>
<</nobr>><<widget "nightclubDanceSexResult">>
<<nobr>>
<<set _nightclubDanceDispositionAmount to _args.length > 0 ? Number(_args[0]) : -4>>
<<set _nightclubDanceCorruptionAmount to _args.length > 1 ? Number(_args[1]) : 2>>
<<set _nightclubDanceDispositionBefore to $dominance>>
<<set _nightclubDanceCorruptionBefore to $corruption>>
<<run setup.adjustDominance(_nightclubDanceDispositionAmount, { notify: false })>>
<<run setup.adjustCorruption(_nightclubDanceCorruptionAmount, { notify: false })>>
<<set _nightclubDanceDispositionChange to $dominance - _nightclubDanceDispositionBefore>>
<<set _nightclubDanceCorruptionChange to $corruption - _nightclubDanceCorruptionBefore>>
<<run UIBar.update()>>
<<if _nightclubDanceDispositionChange isnot 0>><p @class="'gym-stat-gain stat-change-confirmation stat-change-confirmation--disposition stat-change-confirmation--' + (_nightclubDanceDispositionChange > 0 ? 'increase' : 'decrease')"><strong>Disposition <<if _nightclubDanceDispositionChange > 0>>+<</if>><<print _nightclubDanceDispositionChange>></strong></p><</if>>
<<if _nightclubDanceCorruptionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--corruption stat-change-confirmation--increase"><strong>Corruption +<<print _nightclubDanceCorruptionChange>></strong></p><</if>>
<</nobr>>
<</widget>>
<<widget "warehouseManagementUI">>
<<nobr>>
<<set _warehouseManagement to setup.ensureWarehouseManagementState()>>
<div class="warehouse-management" id="warehouse-management-ui">
<nav class="warehouse-management__tabs" aria-label="Building management categories">
<<for _managementCategory range setup.warehouseManagementCategories>>
<<if _managementCategory.id isnot "clean-up" && !setup.isWarehouseFullyCleaned()>><<continue>><</if>>
<<if (_managementCategory.id is "human-resources" || _managementCategory.id is "financial") && !setup.isWarehouseBarComplete()>><<continue>><</if>>
<<if _managementCategory.id is "tutorial" && !setup.isWarehouseNightclubComplete()>><<continue>><</if>>
<<set _managementCategoryId to _managementCategory.id>>
<<set _managementCategoryLabel to _managementCategory.label>>
<<capture _managementCategoryId _managementCategoryLabel>>
<<if _warehouseManagement.selectedCategory is _managementCategoryId>>
<button class="is-active" disabled><<print _managementCategoryLabel>></button>
<<else>>
<<button _managementCategoryLabel>>
<<set $warehouseManagement.selectedCategory to _managementCategoryId>>
<<replace "#warehouse-management-ui">><<warehouseManagementUI>><</replace>>
<</button>>
<</if>>
<</capture>>
<</for>>
</nav>
<section class="warehouse-management__content">
<<if _warehouseManagement.lastNotice>><p class="warehouse-management__notice"><<print _warehouseManagement.lastNotice>></p><</if>>
<<if _warehouseManagement.selectedCategory is "clean-up">>
<div class="warehouse-management__heading">
<div><span><<print setup.isWarehouseFullyCleaned() ? "Maintenance category" : "Renovation phase">></span><h3>Cleanliness</h3></div>
<<if setup.isWarehouseFullyCleaned()>><p>Keep the Warehouse and its businesses clean. Manual cleaning takes two parts of the day.</p><<else>><p>Clear the neglected building first. Each effort takes two parts of the day.</p><</if>>
</div>
<div class="warehouse-cleanup-grid">
<<for _cleanArea range setup.warehouseCleanUpAreas>>
<<set _cleanAreaId to _cleanArea.id>>
<<if setup.isWarehouseCleanUpComplete(_cleanAreaId)>><<continue>><</if>>
<<set _cleanAreaLabel to setup.getWarehouseCleanUpAreaLabel(_cleanArea)>>
<<set _cleanProgress to setup.getWarehouseCleanUpProgress(_cleanAreaId)>>
<<capture _cleanArea _cleanAreaId _cleanAreaLabel _cleanProgress>>
<article @class="setup.isWarehouseCleanUpComplete(_cleanAreaId) ? 'warehouse-cleanup-card is-complete' : 'warehouse-cleanup-card'">
<header><h4><<print _cleanAreaLabel>></h4><strong><<print _cleanProgress>> / <<print _cleanArea.target>></strong></header>
<<if setup.isWarehouseCleanUpComplete(_cleanAreaId)>><p>The area has been fully cleared and is ready for renovation.</p><<else>><p><<print _cleanArea.description>></p><</if>>
<div class="warehouse-segment-bar" @style="'grid-template-columns: repeat(' + _cleanArea.target + ', minmax(3px, 1fr));'" @aria-label="_cleanAreaLabel + ' clean-up progress: ' + _cleanProgress + ' of ' + _cleanArea.target">
<<for _segment = 1; _segment <= _cleanArea.target; _segment++>>
<span @class="_segment <= _cleanProgress ? 'is-complete' : ''"></span>
<</for>>
</div>
<div class="warehouse-cleanup-card__action">
<<if setup.isWarehouseCleanUpComplete(_cleanAreaId)>>
<button class="warehouse-management__complete" disabled>Complete</button>
<<elseif setup.canPerformWarehouseManagementAction("cleanUp")>>
<<link "Clean this area">>
<<set $warehouseCleanupResult to setup.performWarehouseCleanUp(_cleanAreaId)>>
<<if $warehouseCleanupResult.ok>><<goto "Warehouse Cleaning">><</if>>
<</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getWarehouseManagementActionLockMessage('cleanUp')">Clean this area</span>
<</if>>
</div>
</article>
<</capture>>
<</for>>
</div>
<<if setup.isWarehouseBarComplete()>>
<<set _businessLabel to setup.getWarehouseBusinessLabel()>>
<<set _barClean to setup.isWarehouseBarClean()>>
<<set _barCleanliness to setup.getWarehouseBarCleanliness()>>
<<set _barCleanlinessTarget to setup.getWarehouseBarCleanlinessTarget()>>
<<set _barCleanerCount to setup.getWarehouseBarBusiness().staff.cleaners>>
<<set _cleanBusinessLabel to "Clean the " + _businessLabel>>
<article @class="_barClean ? 'warehouse-cleanup-card warehouse-cleanup-card--maintenance is-complete' : 'warehouse-cleanup-card warehouse-cleanup-card--maintenance'">
<header><h4><<print _businessLabel>></h4><strong><<print _barCleanliness>> / <<print _barCleanlinessTarget>></strong></header>
<<if setup.isWarehouseCleaningFullyStaffed()>><p>Your cleaning staff handles every segment after closing.</p><<elseif _barCleanerCount > 0>><p>Your Cleaner handles one segment after closing. You must clean the remainder manually.</p><<elseif _barClean>><p>The <<print _businessLabel>> is clean. It will need attention again after the day ends.</p><<else>><p>The <<print _businessLabel>> is dirty, reducing its effective Popularity by 50% until it is fully cleaned.</p><</if>>
<div class="warehouse-segment-bar" @style="'grid-template-columns: repeat(' + _barCleanlinessTarget + ', minmax(3px, 1fr));'"><<for _barCleanSegment = 1; _barCleanSegment <= _barCleanlinessTarget; _barCleanSegment++>><span @class="_barCleanSegment <= _barCleanliness ? 'is-complete' : ''"></span><</for>></div>
<div class="warehouse-cleanup-card__action">
<<if setup.isWarehouseCleaningFullyStaffed()>><button class="warehouse-management__complete" disabled>Handled by Cleaners</button>
<<elseif _barClean>><button class="warehouse-management__complete" disabled>Clean</button>
<<elseif setup.canPerformWarehouseManagementAction("cleanUp")>><<link _cleanBusinessLabel>><<run setup.performWarehouseBarCleaning()>><<replace "#warehouse-management-ui">><<warehouseManagementUI>><</replace>><</link>>
<<else>><span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getWarehouseManagementActionLockMessage('cleanUp')">Clean the <<print _businessLabel>></span><</if>>
</div>
</article>
<</if>>
<<if setup.isWarehouseFullyCleaned()>><div class="warehouse-management__phase-complete"><strong>Warehouse clean-up complete.</strong><span>All cleared areas have been removed from the work list.</span></div><</if>>
<<elseif _warehouseManagement.selectedCategory is "rooms">>
<div class="warehouse-management__heading">
<div><span>Development category</span><h3>Rooms</h3></div>
<<if setup.areAllWarehouseRoomsComplete()>><p>Every planned room has been completed.</p><<else>><p>Complete the plans, pay the contractor upfront, and wait for construction to finish.</p><</if>>
</div>
<div class="warehouse-room-grid">
<<for _roomProject range setup.warehouseRoomProjects>>
<<set _roomState to setup.getWarehouseRoomState(_roomProject.id)>>
<<if _roomState.status is "complete">><<continue>><</if>>
<<set _roomBlocked to setup.isWarehouseProjectBlocked("rooms", _roomProject.id)>>
<<capture _roomProject _roomState _roomBlocked>>
<article class="warehouse-room-project">
<div class="warehouse-room-project__summary">
<div><span>Room project</span><h4><<print _roomProject.label>></h4></div>
<strong><<if _roomState.status is "planning">>Planning<<elseif _roomState.status is "ready">>Ready to renovate<<else>>Under renovation<</if>></strong>
</div>
<div class="warehouse-room-project__details"><span>Contractor cost <strong>c<<print _roomProject.cost>></strong></span><span>Construction time <strong><<print _roomProject.renovationDays>> days</strong></span></div>
<div class="warehouse-room-project__planning">
<header><span>Planning progress</span><strong><<print _roomState.planning>> / <<print _roomProject.planningTarget>></strong></header>
<div class="warehouse-segment-bar warehouse-segment-bar--planning" @style="'grid-template-columns: repeat(' + _roomProject.planningTarget + ', minmax(3px, 1fr));'">
<<for _roomPlanSegment = 1; _roomPlanSegment <= _roomProject.planningTarget; _roomPlanSegment++>><span @class="_roomPlanSegment <= _roomState.planning ? 'is-complete' : ''"></span><</for>>
</div>
</div>
<div class="warehouse-room-project__action">
<<if _roomBlocked>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="Finish the active Rooms project before starting another.">Project locked</span>
<<elseif _roomState.status is "planning">>
<<if setup.canPerformWarehouseManagementAction("roomPlanning")>>
<<link "Work on plans" "Warehouse Building Management">><<run setup.planWarehouseRoom(_roomProject.id)>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getWarehouseManagementActionLockMessage('roomPlanning')">Work on plans</span>
<</if>>
<<elseif _roomState.status is "ready">>
<<if setup.canAfford(_roomProject.cost)>>
<<set _renovationLabel to "Start renovation — c" + _roomProject.cost>>
<<link _renovationLabel "Warehouse Building Management">><<run setup.startWarehouseRoomRenovation(_roomProject.id)>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="Not enough credits.">Start renovation — c<<print _roomProject.cost>></span>
<</if>>
<<else>>
<p><strong><<print setup.getWarehouseRoomRenovationDaysRemaining(_roomProject.id)>></strong> day(s) remaining. Scheduled completion: <<print setup.formatGameDate(_roomState.completionDate)>>.</p>
<</if>>
</div>
</article>
<</capture>>
<</for>>
</div>
<<if setup.areAllWarehouseRoomsComplete()>><div class="warehouse-management__phase-complete"><strong>All room projects complete.</strong><span>Finished rooms are accessible directly from the Warehouse.</span></div><</if>>
<<elseif _warehouseManagement.selectedCategory is "features">>
<div class="warehouse-management__heading">
<div><span>Development category</span><h3>Features</h3></div>
<p>Plan major facilities, then commission one renovation project at a time.</p>
</div>
<div class="warehouse-room-grid">
<<for _featureProject range setup.warehouseFeatureProjects>>
<<if !setup.isWarehouseFeatureVisible(_featureProject.id)>><<continue>><</if>>
<<set _featureState to setup.getWarehouseFeatureState(_featureProject.id)>>
<<if _featureState.status is "complete">><<continue>><</if>>
<<set _featureBlocked to setup.isWarehouseProjectBlocked("features", _featureProject.id)>>
<<capture _featureProject _featureState _featureBlocked>>
<article class="warehouse-room-project warehouse-feature-project">
<div class="warehouse-room-project__summary">
<div><span>Feature project</span><h4><<print _featureProject.label>></h4></div>
<strong><<if _featureState.status is "planning">>Planning<<elseif _featureState.status is "ready">>Ready to renovate<<else>>Under renovation<</if>></strong>
</div>
<p class="warehouse-feature-project__description"><<print _featureProject.description>></p>
<div class="warehouse-room-project__details"><span>Contractor cost <strong>c<<print _featureProject.cost>></strong></span><span>Construction time <strong><<print _featureProject.renovationDays>> days</strong></span></div>
<div class="warehouse-room-project__planning">
<header><span>Planning progress</span><strong><<print _featureState.planning>> / <<print _featureProject.planningTarget>></strong></header>
<div class="warehouse-segment-bar warehouse-segment-bar--planning" @style="'grid-template-columns: repeat(' + _featureProject.planningTarget + ', minmax(3px, 1fr));'">
<<for _featureSegment = 1; _featureSegment <= _featureProject.planningTarget; _featureSegment++>><span @class="_featureSegment <= _featureState.planning ? 'is-complete' : ''"></span><</for>>
</div>
</div>
<div class="warehouse-room-project__action">
<<if _featureBlocked>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="Finish the active Features project before starting another.">Project locked</span>
<<elseif _featureState.status is "planning">>
<<if setup.canPerformWarehouseManagementAction("featurePlanning")>>
<<link "Work on plans" "Warehouse Building Management">><<run setup.planWarehouseFeature(_featureProject.id)>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getWarehouseManagementActionLockMessage('featurePlanning')">Work on plans</span>
<</if>>
<<elseif _featureState.status is "ready">>
<<if setup.canAfford(_featureProject.cost)>>
<<set _featureRenovationLabel to "Start renovation — c" + _featureProject.cost>>
<<link _featureRenovationLabel "Warehouse Building Management">><<run setup.startWarehouseFeatureRenovation(_featureProject.id)>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="Not enough credits.">Start renovation — c<<print _featureProject.cost>></span>
<</if>>
<<else>>
<p><strong><<print setup.getWarehouseFeatureRenovationDaysRemaining(_featureProject.id)>></strong> day(s) remaining. Scheduled completion: <<print setup.formatGameDate(_featureState.completionDate)>>.</p>
<</if>>
</div>
</article>
<</capture>>
<</for>>
</div>
<<elseif _warehouseManagement.selectedCategory is "human-resources">>
<<set _barBusiness to setup.getWarehouseBarBusiness()>>
<<set _businessLabel to setup.getWarehouseBusinessLabel()>>
<div class="warehouse-management__heading"><div><span><<print _businessLabel>> operations</span><h3>Human Resources</h3></div><p>Staff wages are settled every Monday. If the wage bill cannot be covered, there is an equal chance that the staff quit or remain while their unpaid wages carry into the next week. Firing an employee costs one full weekly wage upfront.</p></div>
<div class="warehouse-staff-summary"><span @class="setup.isWarehouseBarOpen() ? 'is-open' : 'is-closed'"><<if setup.isWarehouseBarOpen()>><<print _businessLabel>> open<<else>><<print _businessLabel>> closed — requires <<print setup.getWarehouseRequiredStaffCount('barmen')>> Barman<<if setup.getWarehouseRequiredStaffCount('barmen') > 1>>s<</if>>, <<print setup.getWarehouseRequiredStaffCount('waitresses')>> Waitress<<if setup.getWarehouseRequiredStaffCount('waitresses') > 1>>es<</if>>, and <<print setup.getWarehouseRequiredStaffCount('dishwashers')>> Dishwasher<<if setup.getWarehouseRequiredStaffCount('dishwashers') > 1>>s<</if>><</if>></span><strong>Weekly wages: c<<print setup.getWarehouseBarWeeklyWages()>></strong></div>
<div class="warehouse-staff-grid">
<<for _staffRole range setup.getWarehouseActiveStaffDefinitions()>>
<<if !setup.isWarehouseBarStaffVisible(_staffRole.id)>><<continue>><</if>>
<<set _staffCapacity to setup.getWarehouseBarStaffCapacity(_staffRole)>>
<<set _staffHealthyCount to setup.getWarehouseHealthyStaffCount(_staffRole.id)>>
<<set _staffWoundedCount to setup.getWarehouseWoundedStaffCount(_staffRole.id)>>
<<capture _staffRole _staffCapacity _staffHealthyCount _staffWoundedCount>>
<<set _staffFireLabel to "Fire — c" + _staffRole.weeklyCost>>
<article class="warehouse-staff-card">
<div class="warehouse-staff-card__details">
<span><<print _staffRole.category>></span><h4><<print _staffRole.label>></h4>
<p><strong>Weekly wage:</strong> c<<print _staffRole.weeklyCost>> per employee.</p>
<p><strong>Requirement:</strong> <<print setup.getWarehouseBarStaffRequirementText(_staffRole.id)>></p>
<<switch _staffRole.id>>
<<case "barmen">><p><strong>Effect:</strong> Each provides <<print Math.round((100 / _staffCapacity) * 10) / 10>>% service efficiency.</p>
<<case "waitresses">><p><strong>Effect:</strong> Each adds 5% effective Popularity by serving patrons and keeping tables attended.</p>
<<case "dishwashers">><p><strong>Effect:</strong> Keeps service running and allows the venue to open when fully staffed.</p>
<<case "cleaners">><p><strong>Effect:</strong> Each cleans one venue segment automatically after closing.</p>
<<case "dancers">><p><strong>Effect:</strong> Each adds 5% effective Popularity.</p>
<<case "strippers">><p><strong>Effect:</strong> Each adds <<print setup.getWarehouseNightclubStripperPopularityBonusPercent()>>% effective Popularity and may earn private-service income.</p>
<<case "djs">><p><strong>Effect:</strong> The DJ adds 5% effective Popularity.</p>
<<case "bouncers">><p><strong>Effect:</strong> Each reduces the daily employee-attack chance by 0.5 percentage points, rounded up.<<if setup.getWarehousePartnerBouncerCount()>><br><strong>Partner:</strong> <<print setup.getPartnerDisplayName(setup.getWarehousePartner())>> also protects the Nightclub as one Bouncer without taking a wage or staff slot.<</if>></p>
<<case "managers">><p><strong>Effect:</strong> The Manager adds 50% effective Popularity. Able to hire advanced staff.</p>
<</switch>>
<<if _staffWoundedCount > 0>><p><strong>Status:</strong> <<print _staffHealthyCount>> active · <<print _staffWoundedCount>> wounded and still paid · Recovery: <<print setup.getWarehouseWoundedStaffRecoveryText(_staffRole.id)>>.</p><</if>>
</div>
<div class="warehouse-staff-card__controls">
<div class="warehouse-staff-card__quantity"><strong><<print _barBusiness.staff[_staffRole.id]>> / <<print _staffCapacity>></strong><<if setup.canHireWarehouseBarStaff(_staffRole.id)>><<button "+">><<run setup.adjustWarehouseBarStaff(_staffRole.id, 1)>><<replace "#warehouse-management-ui">><<warehouseManagementUI>><</replace>><</button>><<else>><span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getWarehouseBarStaffHireLockMessage(_staffRole.id)">+</span><</if>></div>
<<if _staffRole.id isnot "managers">><div class="warehouse-staff-card__fire"><<if _barBusiness.staff[_staffRole.id] <= 0>><button disabled>Fire</button><<elseif setup.canFireWarehouseBarStaff(_staffRole.id)>><<button _staffFireLabel>><<run setup.adjustWarehouseBarStaff(_staffRole.id, -1)>><<replace "#warehouse-management-ui">><<warehouseManagementUI>><</replace>><</button>><<else>><span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getWarehouseBarStaffFireLockMessage(_staffRole.id)"><<print _staffFireLabel>></span><</if>></div><</if>>
</div>
</article>
<</capture>>
<</for>>
</div>
<<elseif _warehouseManagement.selectedCategory is "financial">>
<<set _barBusiness to setup.getWarehouseBarBusiness()>>
<<set _businessLabel to setup.getWarehouseBusinessLabel()>>
<<set _warehouseDrinkPriceInput to _barBusiness.drinkPrice>><<set _warehouseFoodPriceInput to _barBusiness.foodPrice>>
<<set _warehouseDancePriceInput to _barBusiness.privateDancePrice>><<set _warehouseSexPriceInput to _barBusiness.sexualServicePrice>>
<<set _warehouseNightclubShareInput to _barBusiness.nightclubSharePercent>>
<div class="warehouse-management__heading"><div><span><<print _businessLabel>> finances</span><h3>Financial</h3></div><p>Patrons buy <<print setup.getWarehouseDrinksPerPatron()>> drinks and one meal each day.</p></div>
<div class="warehouse-financial-grid">
<article class="warehouse-financial-card"><span>Popularity</span><strong><<print _barBusiness.popularity>> / <<print setup.getWarehouseBusinessPopularityCap()>></strong><small><<if !setup.isWarehouseBarClean()>>Dirty <<print _businessLabel>>: 50% reduction · <</if>><<print setup.getWarehouseBarPatronCount()>> potential patrons with staffing</small></article>
<article class="warehouse-financial-card"><span>Beverage acceptance</span><strong><<print Math.round(setup.getWarehouseBarPriceDemandRate() * 100)>>%</strong><small><<print setup.getWarehouseBarPayingPatronCount()>> attending patrons expected to buy drinks and food; private services remain available to all patrons</small></article>
<article class="warehouse-financial-card"><span>Projected daily income</span><strong>c<<print setup.getWarehouseBarProjectedDailyRevenue()>></strong><small><<print Math.round(setup.getWarehouseBarBarmanEfficiency() * 100)>>% service efficiency</small></article>
<article class="warehouse-financial-card"><span>Staff popularity bonus</span><strong>+<<print Math.round(setup.getWarehouseBusinessPopularityBonusRate() * 100)>>%</strong><small>Applied to effective Popularity and rounded up</small></article>
<article class="warehouse-financial-card"><span>Weekly wages</span><strong>c<<print setup.getWarehouseBarWeeklyWages()>></strong><small>Charged even while the <<print _businessLabel>> is closed</small></article>
<<if setup.isWarehouseNightclubComplete()>><article class="warehouse-financial-card"><span>Employee attack risk</span><strong><<print setup.getWarehouseNightclubEmployeeAttackChance()>>%</strong><small>Daily chance for one working employee to be wounded for seven days<<if _barBusiness.lastDailyResult && _barBusiness.lastDailyResult.employeeAttacked>><br>Last incident: <<print setup.getWarehouseBarStaffRole(_barBusiness.lastDailyResult.woundedRoleId).singular>> wounded until <<print setup.formatGameDate(_barBusiness.lastDailyResult.woundedRecoveryDate)>><</if>></small></article><</if>>
<<if setup.isWarehouseNightclubComplete() && _barBusiness.lastDailyResult>><article class="warehouse-financial-card"><span>Last private services</span><strong>c<<print _barBusiness.lastDailyResult.privateServiceRevenue || 0>></strong><small><<print _barBusiness.lastDailyResult.privateDances || 0>> private dance(s) · <<print _barBusiness.lastDailyResult.sexualServices || 0>> sexual service(s) · Nightclub share only<<if (_barBusiness.lastDailyResult.stripperQuits || 0) > 0>> · <<print _barBusiness.lastDailyResult.stripperQuits>> Stripper(s) quit · c<<print _barBusiness.lastDailyResult.stripperQuitPenalty>> fee<</if>></small></article><</if>>
</div>
<div class="warehouse-marketing-panel">
<div class="warehouse-management__heading"><div><span><<print _businessLabel>> promotion</span><h3>Marketing</h3></div><p>Every campaign makes one 40% roll per day. A successful roll brings more patrons with longer campaigns.</p></div>
<<if setup.isWarehouseBarMarketingActive()>>
<<set _activeMarketingPlan to setup.getWarehouseBarMarketingPlan(_barBusiness.marketing.planId)>>
<p class="warehouse-management__notice"><<print _activeMarketingPlan ? _activeMarketingPlan.label : "Marketing">> campaign active until <<print setup.formatGameDate(_barBusiness.marketing.endDate)>>. Each successful daily roll brings <<print _activeMarketingPlan ? _activeMarketingPlan.patronsPerSuccess : 1>> patron(s).</p>
<<else>>
<div class="warehouse-marketing-options">
<<for _marketingPlan range setup.warehouseBarMarketingPlans>>
<<set _marketingPlanId to _marketingPlan.id>>
<<set _marketingPlanCost to _marketingPlan.cost>>
<<set _marketingPlanLabel to _marketingPlan.label + " — c" + _marketingPlan.cost + " — +" + _marketingPlan.patronsPerSuccess + " patron" + (_marketingPlan.patronsPerSuccess > 1 ? "s" : "")>>
<<capture _marketingPlanId _marketingPlanCost _marketingPlanLabel>>
<<if setup.canAfford(_marketingPlanCost)>>
<<button _marketingPlanLabel>><<run setup.startWarehouseBarMarketing(_marketingPlanId)>><<replace "#warehouse-management-ui">><<warehouseManagementUI>><</replace>><</button>>
<<else>>
<span class="warehouse-marketing-button-lock passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="Not enough credits."><button disabled><<print _marketingPlanLabel>></button></span>
<</if>>
<</capture>>
<</for>>
</div>
<</if>>
</div>
<div class="warehouse-price-panel"><h4><<print _businessLabel>> prices</h4><p>Higher prices reduce beverage and meal acceptance only. Drinks are limited to c1–20 and food to c1–50; patrons who decline them may still purchase private services.</p><div class="warehouse-price-fields"><label>Drink price <span>c<<textbox "_warehouseDrinkPriceInput" _barBusiness.drinkPrice>></span></label><label>Food price <span>c<<textbox "_warehouseFoodPriceInput" _barBusiness.foodPrice>></span></label></div><<button "Apply prices">><<run setup.setWarehouseBarPrices(_warehouseDrinkPriceInput, _warehouseFoodPriceInput)>><<replace "#warehouse-management-ui">><<warehouseManagementUI>><</replace>><</button>></div>
<<if setup.isWarehouseNightclubComplete()>>
<div class="warehouse-price-panel warehouse-private-service-panel">
<h4>Private-service prices and share</h4>
<p>Private dances range from c50–400 and sexual services from c150–400. Every c1 above or below the default changes its purchase chance by 0.2 percentage points. The shared Nightclub cut defaults to 30%; fractional venue credits are rounded down.</p>
<div class="warehouse-price-fields">
<label class="warehouse-private-service-field"><strong>Private dance price</strong><span class="warehouse-private-service-field__input">c<<textbox "_warehouseDancePriceInput" _barBusiness.privateDancePrice>></span><small><<print setup.getWarehouseNightclubPrivateDanceChance()>>% purchase chance</small></label>
<label class="warehouse-private-service-field"><strong>Sexual service price</strong><span class="warehouse-private-service-field__input">c<<textbox "_warehouseSexPriceInput" _barBusiness.sexualServicePrice>></span><small><<print setup.getWarehouseNightclubSexualServiceChance()>>% chance after a private dance</small></label>
<label class="warehouse-private-service-field warehouse-private-service-field--wide"><strong>Nightclub share</strong><span class="warehouse-private-service-field__input"><<textbox "_warehouseNightclubShareInput" _barBusiness.nightclubSharePercent>>%</span><small>Stripper Popularity: +<<print setup.getWarehouseNightclubStripperPopularityBonusPercent()>>% each · Daily quitting risk: <<print setup.getWarehouseNightclubStripperQuitChance()>>% each</small></label>
</div>
<<button "Apply private-service settings">><<run setup.setWarehouseNightclubPrivateServiceSettings(_warehouseDancePriceInput, _warehouseSexPriceInput, _warehouseNightclubShareInput)>><<replace "#warehouse-management-ui">><<warehouseManagementUI>><</replace>><</button>>
</div>
<</if>>
<<else>>
<div class="game-tutorial warehouse-tutorial">
<header class="game-tutorial__header">
<div><span class="game-tutorial__eyebrow">NIGHTCLUB REFERENCE</span><h2>Managing the Nightclub</h2></div>
<p>A practical guide to keeping the venue staffed, safe, clean, popular, and profitable.</p>
</header>
<div class="tutorial-grid">
<section class="tutorial-card tutorial-card--wide">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">✓</span><h3>Opening the Nightclub</h3></div>
<p>The Nightclub opens only while at least <strong>2 Barmen, 2 Waitresses, and 2 Dishwashers</strong> are healthy and employed. Optional employees improve the business but are not required to open.</p>
<p class="tutorial-note">A wounded required employee does not count toward the opening requirement. Hire a replacement or wait for recovery.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">♟</span><h3>Core Staff</h3></div>
<ul><li><strong>Barmen:</strong> provide service efficiency. All 8 positions are needed for 100% efficiency.</li><li><strong>Waitresses:</strong> each adds 5% effective Popularity.</li><li><strong>Dishwashers:</strong> required to keep service running.</li><li><strong>Cleaners:</strong> each restores one cleanliness segment automatically.</li><li><strong>Dancers:</strong> each adds 5% effective Popularity and does not require a Manager.</li></ul>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">★</span><h3>Advanced Staff</h3></div>
<p>Hiring the permanent Manager adds 50% effective Popularity and reveals advanced development projects.</p>
<ul><li><strong>Bouncers:</strong> become available with a Manager.</li><li><strong>DJ:</strong> requires a completed DJ Booth.</li><li><strong>Strippers:</strong> require completed Private Rooms.</li></ul>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">✦</span><h3>Popularity and Patrons</h3></div>
<p>One point of base Popularity represents one potential patron. Staff bonuses increase effective Popularity and are rounded up.</p>
<p class="tutorial-note">The Nightclub begins with a cap of 2000. Completing the Second Floor raises it to 3000.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">≋</span><h3>Cleanliness</h3></div>
<p>The Nightclub gains two dirty segments after daily operations. If it is not fully clean, effective Popularity is reduced by 50%.</p>
<p class="tutorial-note">Manual work clears segments using parts of the day. One Cleaner handles one segment; two Cleaners handle all daily cleaning.</p>
</section>
<section class="tutorial-card tutorial-card--wide">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">c</span><h3>Sales and Pricing</h3></div>
<p>Every patron who accepts the menu prices buys <strong>4 drinks and 1 meal</strong> each day. Higher drink and food prices increase revenue per sale but reduce the percentage of patrons willing to buy them. Barman efficiency then limits how much of that demand the venue can serve.</p>
<div class="tutorial-flow"><span>Popularity</span><b>›</b><span>Price acceptance</span><b>›</b><span>Barman efficiency</span><b>›</b><span>Daily income</span></div>
<p class="tutorial-note">Beverage acceptance does not remove patrons from the venue or prevent them from purchasing private dances and sexual services. Daily income is added to Outstanding Balance.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">↑</span><h3>Marketing</h3></div>
<p>Only one campaign may run at a time. Every active campaign makes one 40% success roll each day.</p>
<ul><li><strong>1 week:</strong> +1 Popularity per success.</li><li><strong>2 weeks:</strong> +2 Popularity per success.</li><li><strong>1 month:</strong> +4 Popularity per success.</li></ul>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">%</span><h3>Private Services</h3></div>
<p>Each working Stripper may sell a private dance to an available patron. A completed dance may then lead to a sexual service. Prices alter purchase chances by 0.2 percentage points for every c1 above or below the default.</p>
<p class="tutorial-note">The Nightclub receives its configured share, rounded down. A lower share improves each Stripper's Popularity bonus; pushing the share too high can make them quit and incur a separation fee.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">♦</span><h3>Security and Injuries</h3></div>
<p>There is a base 2% daily chance for one working employee to be attacked. Each Bouncer lowers this chance by 0.5 percentage points, rounded up. A partner living in the Warehouse provides the same protection as one Bouncer without taking a wage or staff slot.</p>
<p class="tutorial-note">Wounded staff recover after seven days. They still receive wages, provide no effect, and cannot be fired while recovering.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">▣</span><h3>Projects</h3></div>
<p>Only one project can be active within a development category. First complete every planning segment, then pay the contractor upfront and wait for construction.</p>
<p class="tutorial-note">A partner living in the Warehouse reduces the phase cost of Building Management work by one.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">!</span><h3>Wages and Firing</h3></div>
<p>Weekly wages are charged every Monday, even if the Nightclub is closed. Firing an employee costs one full weekly wage upfront.</p>
<p class="tutorial-note">If wages cannot be covered, ordinary staff may quit or leave their unpaid wages to carry forward. The Manager is permanent: she cannot be fired and does not quit over unpaid wages.</p>
</section>
</div>
</div>
<</if>>
</section>
</div>
<</nobr>>
<</widget>><<set $districtTheme to "middle-city">><<run setup.applyDistrictTheme()>>
<<if setup.shouldShowPartnerWarehouseArrival()>><<goto "Partner Arrives At Warehouse">><</if>>
<<if setup.tryBradfordScentEncounter("Warehouse")>><<goto "Bradford Scent Encounter">><</if>>
<<if setup.shouldTriggerNightclubMainFloorEncounter()>><<goto "Nightclub Bar Body Shot Encounter">><</if>>
<<if setup.isWarehouseBarComplete()>><<run setup.setBarReturnPassage("Warehouse")>><</if>>
<<nobr>>
<h2><<print setup.isWarehouseNightclubComplete() ? "Nightclub" : "Warehouse">></h2>
<<if setup.isWarehouseNightclubComplete()>>
<p>The expanded main hall pulses with light and music as your Nightclub draws patrons from across the middle city. The old Bar staff work alongside the larger crew without missing a step.</p>
<<elseif setup.isWarehouseBarComplete()>>
<p>The restored main hall now operates as your own Bar. Staff move between the counter and crowded tables while the Warehouse earns its place in the middle city.</p>
<<elseif setup.isWarehouseCleanUpComplete("mainHall")>>
<p>The main hall has finally been cleared. Its scarred walls and bare concrete still need renovation, but the open floor now resembles a base of operations instead of a forgotten ruin.</p>
<<say $mcname setup.getMcPortrait() "thought">>Empty, solid, and ours. Now we can actually decide what this place will become.<</say>>
<<else>>
<p>The old warehouse is rough and sparsely furnished, but it gives you and Irine a foothold in the middle city.</p>
<</if>>
<img class="scene-image" @src="setup.getWarehouseMainHallImage()" alt="The Warehouse main hall">
<<if setup.isWarehouseBarComplete()>>
<<if setup.isMercenaryAtVestedInterest()>>
<<link "Contracts">><<run setup.setBarReturnPassage("Warehouse")>><<goto "Contracts">><</link>><br>
<<if setup.getActiveMercenaryContract()>>
<<if setup.canPerformDayPhaseAction("contract")>><<link "Do some mercenary work" "Kill Contract Encounter">><<run setup.setBarReturnPassage("Warehouse")>><<run setup.advanceDayPhasesForAction("contract")>><</link>><<else>><span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('contract')">Do some mercenary work</span><</if>><br>
<</if>>
<</if>>
<<link "Look for some extra work...">><<run setup.setBarReturnPassage("Warehouse")>><<goto "Extra Work">><</link>><br>
<<link "Sit at the bar">><<run setup.setBarReturnPassage("Warehouse")>><<goto "Sit at the bar">><</link>><br>
<</if>>
[[My room->Warehouse My Room]]<br>
[[Irine's room->Warehouse Irine Room]]<br>
<<if setup.isWarehouseNightclubComplete()>>[[Dance->Nightclub Dance Floor]]<br>[[Manager's Office->Warehouse Manager Office]]<br>[[Club Bathroom]]<br><</if>>
<<if !setup.isWarehouseNightclubComplete() && setup.isWarehouseRoomComplete("bathroom")>>[[Bathroom->Warehouse Bathroom]]<br><</if>>
<<if !setup.isWarehouseNightclubComplete() && setup.isWarehouseRoomComplete("kitchen")>>[[Kitchen->Warehouse Kitchen]]<br><</if>>
<<if !setup.isWarehouseNightclubComplete()>>[[Building management->Warehouse Building Management]]<br><</if>>
<<if setup.isDressedForOutside()>>
[[Outside->Middle-City]]
<<else>>
<span class="passage-link-disabled" aria-disabled="true">Outside</span>
<p class="table-order-error">You need to put on an outfit and shoes before going outside.</p>
<</if>>
<</nobr>><<set _nightclubBodyShotCorruptionBefore to $corruption>>
<<run setup.adjustCorruption(1, { notify: false })>><<run UIBar.update()>>
<<set _nightclubBodyShotCorruptionChange to $corruption - _nightclubBodyShotCorruptionBefore>>
<<nobr>>
<h2>Nightclub entertainment</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/encounter1.webp" alt="Two women entertaining the crowd on the Nightclub bar">
<p>A burst of cheering draws your attention to the counter. A woman lies across the bar with her breasts exposed while laughing patrons pour trails of alcohol over her naked skin. Another woman straddles her and slowly licks the liquor from her body, drawing louder approval from the crowd.</p>
<<say $mcname setup.getMcPortrait() "thought">>So this is what happens at nightclubs, huh?<</say>>
<p>You cannot help the small smirk that curls across your lips before you turn away.</p>
<<if _nightclubBodyShotCorruptionChange > 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--corruption stat-change-confirmation--increase"><strong>Corruption +<<print _nightclubBodyShotCorruptionChange>></strong></p><<else>><p class="gym-stat-gain"><strong>Corruption is already at its maximum.</strong></p><</if>>
<<link "Return">><<run setup.suppressNightclubMainFloorEncounterOnce()>><<goto "Warehouse">><</link>>
<</nobr>><<run setup.ensureWardrobeState()>>
<<set _nightclubDanceEventsSuppressed to setup.consumeNightclubDanceEventSuppression()>>
<<set _nightclubDanceApproach to "none">>
<<if !_nightclubDanceEventsSuppressed>>
<<set _nightclubDanceBlackout to setup.rollNightclubDanceBlackout($drunkenness)>>
<<if _nightclubDanceBlackout>><<goto "Nightclub Dance Blackout Aftermath">><</if>>
<<set _nightclubDanceShirtPull to setup.rollNightclubDanceShirtPull($drunkenness)>>
<<if _nightclubDanceShirtPull>><<goto "Nightclub Dance Shirt Pulled">><</if>>
<<set _nightclubDanceApproach to setup.rollNightclubDanceApproach($drunkenness)>>
<<if _nightclubDanceApproach is "woman">><<goto "Nightclub Dance Woman Encounter">><</if>>
<</if>>
<<nobr>>
<h2>Dance Floor</h2>
<<if $worn.panties is null>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/dancenopanties.webp" alt="The main character dancing without panties in the Nightclub">
<p>You surrender to the music and move among the crowd. With nothing beneath your outfit, every turn and sway feels especially daring beneath the shifting lights.</p>
<<else>>
<<switch random(1, 4)>>
<<case 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/dance1.webp" alt="The main character dancing in the Nightclub">
<<case 2>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/dance2.webp" alt="The main character dancing in the Nightclub">
<<case 3>><video class="scene-image" src="media/locations/middlecity/warehouse/dancing/dance3.mp4" autoplay loop muted controls playsinline></video>
<<case 4>><video class="scene-image" src="media/locations/middlecity/warehouse/dancing/dance4.mp4" autoplay loop muted controls playsinline></video>
<</switch>>
<p>You step onto the dance floor and lose yourself in the music, moving beneath the lights while the crowd pulses around you.</p>
<</if>>
<<if _nightclubDanceApproach is "man">>
<p>A man catches your eye from the edge of the crowd and approaches with an inviting smile, waiting to see whether you will let him share your space.</p>
<<say "Stranger" "" "enemy">>You look like you could use some company.<</say>>
[[Invite him closer->Nightclub Dance Invitation]]<br>
[[Leave->Warehouse]]
<<else>>
[[Dance more->Nightclub Dance Floor]]<br>
[[Stop dancing->Warehouse]]
<</if>>
<</nobr>><<nobr>>
<h2>A bold interruption</h2>
<video class="scene-image" src="media/locations/middlecity/warehouse/dancing/shirtpulldown1.mp4" autoplay loop muted controls playsinline></video>
<p>A man slips close through the crowd, catches the front of your shirt, and yanks it down before you can react. Your breasts spill into view beneath the flashing lights, drawing startled looks and delighted cheers from the dancers around you.</p>
<<say $mcname setup.getMcPortrait() "jane">>Oh, you absolute bastard!<</say>>
<p>Instead of getting angry, you burst into alcohol-fuelled laughter. You leave yourself exposed for a couple of seconds, enjoying the ridiculous spectacle, then tug your shirt back into place and shake your head at him.</p>
<<link "Return to dancing">><<run setup.suppressNightclubDanceEventsOnce()>><<goto "Nightclub Dance Floor">><</link>>
<</nobr>><<set _nightclubBlackoutDrunkennessBefore to $drunkenness>>
<<run setup.soberUp()>><<run setup.advanceGameDay()>><<run UIBar.update()>>
<<set _nightclubBlackoutPartner to random(1, 2)>>
<<set _nightclubBlackoutScene to _nightclubBlackoutPartner is 1 ? random(1, 2) : random(1, 5)>>
<<nobr>>
<h2>Missing hours</h2>
<<if _nightclubBlackoutPartner is 1>>
<<if _nightclubBlackoutScene is 1>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drunk/wastedles1.webp" alt="The main character waking after spending the night with a woman">
<p>Your memory returns in scattered flashes: an unfamiliar room, a woman's thighs around your face, and her mouth pressed eagerly between your own legs while you pleasured each other.</p>
<<else>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drunk/wastedles2.webp" alt="The main character waking after being pleasured by a woman">
<p>You remember almost nothing after stepping onto the dance floor. Only the hazy sensation of a woman holding your thighs apart and eating you out in an unfamiliar room remains.</p>
<</if>>
<<else>>
<<switch _nightclubBlackoutScene>>
<<case 1>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drunk/wastedman1.webp" alt="The main character waking after sex with a man">
<p>Broken memories surface of an unfamiliar bed and a man fucking you while you were far too drunk to remember how either of you got there.</p>
<<case 2>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drunk/wastedman2.webp" alt="The main character waking after a man climaxed on her face">
<p>You wake with a sticky face and a blurred memory of a man looming over the bed before covering you with his climax.</p>
<<case 3>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drunk/wastedman3.webp" alt="The main character waking after sex with a man">
<p>A pounding head accompanies fragmented memories of being bent across an unfamiliar bed while a stranger fucked you from behind.</p>
<<case 4>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drunk/wastedman4.webp" alt="The main character waking after giving a man deep oral sex">
<p>Your sore throat supplies what your memory cannot: flashes of a large cock forcing deep into your mouth while a man held you in place.</p>
<<case 5>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drunk/wastedmen1.webp" alt="The main character waking after sex with two men">
<p>The worst fragments involve two men—one fucking you while the second pushed his cock between your lips. Everything before and after remains an alcohol-soaked blank.</p>
<</switch>>
<</if>>
<p>You gather your clothes and slip out of the room, unable to meet anyone's eyes as you make your embarrassed escape into the middle city.</p>
<<say $mcname setup.getMcPortrait() "thought">>I really need to learn when I have had enough to drink.<</say>>
<<nightclubDanceSexResult -6 4>>
<<if _nightclubBlackoutDrunkennessBefore > 0>><p class="gym-stat-gain"><strong>Drunkenness -<<print _nightclubBlackoutDrunkennessBefore>>%</strong></p><</if>>
[[Leave the building->Middle-City]]
<</nobr>><<nobr>>
<h2>A drunken kiss</h2>
<<if random(1, 2) is 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drunk/drunkenmakeoutles1.webp" alt="The main character making out with a woman on the Nightclub dance floor"><<else>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drunk/drunkenmakeoutles2.webp" alt="The main character making out with a woman on the Nightclub dance floor"><</if>>
<p>A woman slips through the dancers and catches your gaze. Your alcohol-softened thoughts barely have time to catch up before she draws you close and kisses you. You answer eagerly, making out with her while the crowd moves around you.</p>
<<say "Woman" "" "melisa">>You taste good. Want to go somewhere quieter and have some real fun?<</say>>
<<say $mcname setup.getMcPortrait() "jane">>You certainly know how to make an introduction.<</say>>
[[Agree and go with her->Nightclub Dance Woman Bathroom]]<br>
[[Refuse and leave->Warehouse]]
<</nobr>><<set _nightclubDanceWomanRole to random(1, 2)>>
<<set _nightclubDanceWomanDisposition to _nightclubDanceWomanRole is 2 ? 2 : -4>>
<<nobr>>
<h2>Fun in the bathroom</h2>
<<if _nightclubDanceWomanRole is 1>>
<<if random(1, 2) is 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/cunnlingousles3.webp" alt="The main character pleasuring the woman in the Nightclub bathroom"><<else>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/cunnlingousles4.webp" alt="The main character pleasuring the woman in the Nightclub bathroom"><</if>>
<p>You follow her into the bathroom, help her out of the way of her clothes, and kneel between her thighs. Her fingers tangle in your hair as your tongue draws breathless moans from her.</p>
<<say "Woman" "" "melisa">>Fuck... yes. You are even better with your tongue than you are on the dance floor.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Then hold still and let me finish.<</say>>
<<else>>
<<if random(1, 2) is 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/cunnlingousles1.webp" alt="The woman pleasuring the main character in the Nightclub bathroom"><<else>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/cunnlingousles2.webp" alt="The woman pleasuring the main character in the Nightclub bathroom"><</if>>
<p>Inside the bathroom, she presses you back and sinks between your thighs. Her tongue works with confident purpose until your hands tighten against her and pleasure rolls through you.</p>
<<say $mcname setup.getMcPortrait() "jane">>Oh, fuck... you were not exaggerating about the fun.<</say>>
<<say "Woman" "" "melisa">>I never make promises I cannot keep.<</say>>
<</if>>
<p>You share one more lingering kiss, straighten your clothes, and part ways before returning to the noise outside.</p>
<<nightclubDanceSexResult _nightclubDanceWomanDisposition>>
[[Return to the main hall->Warehouse]]
<</nobr>><<nobr>>
<h2>An invitation</h2>
<video class="scene-image" src="media/locations/middlecity/warehouse/dancing/danceinvite1.mp4" autoplay loop muted controls playsinline></video>
<p>You answer by drawing him into the crowd. He follows eagerly, placing himself behind you as the beat grows heavier.</p>
<<say $mcname setup.getMcPortrait() "jane">>Keep up. I am not slowing down for you.<</say>>
[[Dance with him->Nightclub Dance With Stranger]]
<</nobr>><<set _nightclubDanceDrinkOffer to random(1, 100) <= 50>>
<<nobr>>
<h2>Closer dancing</h2>
<<if random(1, 2) is 1>><video class="scene-image" src="media/locations/middlecity/warehouse/dancing/dancingtwerkman1.mp4" autoplay loop muted controls playsinline></video><<else>><video class="scene-image" src="media/locations/middlecity/warehouse/dancing/dancingtwerkman2.mp4" autoplay loop muted controls playsinline></video><</if>>
<p>You turn your back to him and roll your hips against his groin. His hands hover at your waist while you twerk against the growing hardness beneath his clothes.</p>
<<if _nightclubDanceDrinkOffer>>
<<say "Stranger" "" "enemy">>You know how to move. Let me buy you a drink.<</say>>
[[Agree->Nightclub Dance Stranger Drink]]<br>
[[Refuse and leave->Warehouse]]
<<else>>
<p>After a final song, the crowd pulls you apart. The stranger gives you an appreciative grin before disappearing back into the Nightclub.</p>
[[Dance more->Nightclub Dance Floor]]<br>
[[Return to the main floor->Warehouse]]
<</if>>
<</nobr>><<set _nightclubDanceDrunkennessBefore to $drunkenness>>
<<run setup.adjustDrunkenness(50)>><<run UIBar.update()>>
<<set _nightclubDanceDrunkennessChange to $drunkenness - _nightclubDanceDrunkennessBefore>>
<<nobr>>
<h2>A strong drink</h2>
<<if random(1, 2) is 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drink1.webp" alt="The main character accepting a drink from the stranger"><<else>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/drink2.jpg" alt="The main character accepting a drink from the stranger"><</if>>
<p>He returns with a generously poured drink and watches as you finish it. The alcohol is sweet, strong, and quick to spread warmth through your body.</p>
<<say "Stranger" "" "enemy">>Now that you are loosened up, why not do something fun for me?<</say>>
<<if _nightclubDanceDrunkennessChange > 0>><p class="gym-stat-gain"><strong>Drunkenness +<<print _nightclubDanceDrunkennessChange>>%</strong></p><</if>>
[[Flash your tits->Nightclub Dance Flash Stranger]]<br>
<<if $drunkenness < 60>>[[Thank him for the drink and go->Warehouse]]<</if>>
<</nobr>><<set _nightclubDanceFlashPrivateOffer to random(1, 100) <= 80>>
<<nobr>>
<h2>A daring show</h2>
<video class="scene-image" src="media/locations/middlecity/warehouse/dancing/drinksshowtits1.mp4" autoplay loop muted controls playsinline></video>
<p>You pull your top aside and bare your breasts for him. His expression changes immediately, amusement giving way to naked hunger.</p>
<<if _nightclubDanceFlashPrivateOffer>>
<<say "Stranger" "" "enemy">>Fuck... come somewhere private with me. We can have much more fun than this.<</say>>
[[Go with him->Nightclub Dance Private Encounter]]<br>
[[Turn him down->Warehouse]]
<<else>>
<<set $nightclubDanceBarSexType to random(1, 2)>>
<<say "Stranger" "" "enemy">>Why bother finding another room? I want you now.<</say>>
<p>He does not wait for privacy. Emboldened by your display, he pulls you against him right there beside the bar.</p>
[[Let it happen->Nightclub Dance Bar Sex]]
<</if>>
<</nobr>><<nobr>>
<h2>No privacy needed</h2>
<<if $nightclubDanceBarSexType is 1>>
<video class="scene-image" src="media/locations/middlecity/warehouse/dancing/drinkssexman1.mp4" autoplay loop muted controls playsinline></video>
<p>The stranger presses into you beside the bar and fucks you in full view of anyone who cares to look. The music swallows your cries while he takes what your display promised.</p>
<<say $mcname setup.getMcPortrait() "jane">>Right here...? Fuck—do not stop now.<</say>>
<<else>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/fingeringdrinksman1.webp" alt="The stranger fingering the main character beside the bar">
<p>He slips a hand beneath your clothes and fingers you beside the bar, keeping his body between you and most of the crowd while your knees grow unsteady.</p>
<<say $mcname setup.getMcPortrait() "jane">>You are far too confident with those fingers...<</say>>
<</if>>
<<nightclubDanceSexResult>>
[[Return to the main floor->Warehouse]]
<</nobr>><<nobr>>
<h2>Somewhere private</h2>
<<if random(1, 2) is 1>>
<p>He leads you away from the lights and into the shared bathroom, locking the door behind you before leaning against the nearest wall.</p>
[[Follow him into the bathroom->Nightclub Dance Private Bathroom Oral]]
<<else>>
<p>He guides you through a quieter corridor to an isolated room beyond the main floor, where the pounding music becomes a distant vibration.</p>
[[Follow him into the room->Nightclub Dance Private Room Oral]]
<</if>>
<</nobr>><<nobr>>
<h2>Bathroom foreplay</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/blowjob1.webp" alt="The main character giving the stranger oral sex in the bathroom">
<p>You kneel in the cramped bathroom and take him into your mouth. His fingers tighten in your hair as your tongue draws increasingly impatient breaths from him.</p>
<<say "Stranger" "" "enemy">>That mouth is good, but I want more than this.<</say>>
[[Let him take you->Nightclub Dance Private Bathroom Sex]]
<</nobr>><<nobr>>
<h2>Against the bathroom wall</h2>
<<if random(1, 2) is 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/sexman1.webp" alt="The stranger having sex with the main character in the bathroom"><<else>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/sexman2.webp" alt="The stranger having sex with the main character in the bathroom"><</if>>
<p>He pulls you upright, turns you against the wall, and drives into you. You cling to whatever support you can find while he finishes what began on the dance floor.</p>
<<say $mcname setup.getMcPortrait() "jane">>So this is the fun you promised... harder.<</say>>
<<nightclubDanceSexResult>>
[[Return to the main floor->Warehouse]]
<</nobr>><<set _nightclubDancePrivateRoomRoute to random(1, 2)>>
<<nobr>>
<h2>Behind closed doors</h2>
<<if _nightclubDancePrivateRoomRoute is 1>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/outsideblowjob1.webp" alt="The main character giving the stranger oral sex away from the main floor">
<p>He barely waits for the door to close before you sink to your knees. You tease him with your mouth until patience leaves him entirely.</p>
[[Continue->Nightclub Dance Private Outside Sex]]
<<else>>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/blowjob2.webp" alt="The main character giving the stranger oral sex in a private room">
<p>You kneel before him in the secluded room and work him with your mouth. His approving groans soon turn into commands for you to stand.</p>
[[Continue->Nightclub Dance Private Room Sex]]
<</if>>
<</nobr>><<nobr>>
<h2>Pressed into place</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/outsidesexman1.webp" alt="The stranger having sex with the main character away from the main floor">
<p>He hauls you upright and pushes inside, fucking you with the urgency of someone who has been thinking about this since your bodies first met on the dance floor.</p>
<<say "Stranger" "" "enemy">>That is what you wanted when you started grinding on me, was it not?<</say>>
<<nightclubDanceSexResult>>
[[Return to the main floor->Warehouse]]
<</nobr>><<nobr>>
<h2>The promised fun</h2>
<<switch random(1, 3)>><<case 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/sexman3.webp" alt="The stranger having sex with the main character in a private room"><<case 2>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/sexman5.webp" alt="The stranger having sex with the main character in a private room"><<case 3>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/sex/sexman6.webp" alt="The stranger having sex with the main character in a private room"><</switch>>
<p>The stranger bends you into position and takes you hard in the private room. You let the alcohol, the music, and the thrill of anonymity carry you through the encounter.</p>
<<say $mcname setup.getMcPortrait() "jane">>I invited you for a dance... but this is much more fun.<</say>>
<<nightclubDanceSexResult>>
[[Return to the main floor->Warehouse]]
<</nobr>><<if setup.shouldTriggerCocoOfficeEncounter()>><<goto "Coco Office Encounter">><</if>>
<<nobr>>
<h2>Manager's Office</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/manager/office.jpg" alt="The Nightclub manager's office">
<<if setup.hasWarehouseNightclubManager()>>
<p>Coco runs the Nightclub from this polished office, balancing staff schedules, patron demands, and the nightly accounts with effortless control.</p>
[[Talk to Coco->Warehouse Talk To Coco]]<br>
<<else>>
<p>The office is ready, but its desk remains vacant until you hire a Manager.</p>
<</if>>
[[Building management->Warehouse Building Management]]<br>
[[Return->Warehouse]]
<</nobr>><<nobr>>
<h2>Club Bathroom</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/bathroom.jpg" alt="The Nightclub's shared bathroom">
<p>The Nightclub bathroom is shared by men and women. Music pulses faintly through the walls while patrons drift between the sinks and stalls without much concern for privacy.</p>
[[Stall->Club Bathroom Stall]]<br>
[[Wash up->Club Bathroom Wash Up]]<br>
[[Return->Warehouse]]
<</nobr>><<nobr>>
<h2>Bathroom Stall</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/bathroomstall.webp" alt="A stall in the shared Nightclub bathroom">
<p>You step into one of the stalls and close the door. It offers privacy from the crowded bathroom, though a suspicious opening in the partition suggests that privacy is not absolute.</p>
[[Use->Club Bathroom Stall Use]]<br>
[[Masturbate->Club Bathroom Stall Masturbate]]<br>
[[Return->Club Bathroom]]
<</nobr>><<set _clubGloryholeTriggered to setup.rollClubBathroomGloryhole("use")>>
<<set $clubBathroomGloryholeActive to _clubGloryholeTriggered>>
<<nobr>>
<h2>A moment alone</h2>
<p>You lock the stall, use the toilet, and finally relieve yourself away from the Nightclub's noise.</p>
<<if _clubGloryholeTriggered>>
<p>Just as you prepare to leave, movement at the opening in the partition catches your attention.</p>
[[Look closer->Club Bathroom Gloryhole Reveal]]
<<else>>
[[Return->Club Bathroom Stall]]
<</if>>
<</nobr>><<set _clubGloryholeTriggered to setup.rollClubBathroomGloryhole("masturbate")>>
<<set $clubBathroomGloryholeActive to _clubGloryholeTriggered>>
<<nobr>>
<h2>Private relief</h2>
<<if random(1, 2) is 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/masturbate1.webp" alt="The main character masturbating in the bathroom stall"><<else>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/masturbate2.webp" alt="The main character masturbating in the bathroom stall"><</if>>
<p>The bass beyond the stall masks your breathing as your fingers work between your legs. You let the tension build and break before slowly collecting yourself.</p>
<<say $mcname setup.getMcPortrait() "thought">>That was reckless... but exactly what I needed.<</say>>
<<if _clubGloryholeTriggered>>
<p>A scrape against the partition interrupts the quiet that follows.</p>
[[Turn toward the sound->Club Bathroom Gloryhole Reveal]]
<<else>>
[[Return->Club Bathroom Stall]]
<</if>>
<</nobr>><<set _clubDrunkennessBefore to $drunkenness>>
<<run setup.adjustDrunkenness(-5)>><<run UIBar.update()>>
<<nobr>>
<h2>Wash up</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/wash.jpg" alt="The wash area in the shared Nightclub bathroom">
<p>You splash cold water across your face and wrists. The shock clears some of the haze left by the Nightclub's drinks.</p>
<<if _clubDrunkennessBefore > 0>><p class="gym-stat-gain"><strong>Drunkenness -<<print Math.min(5, _clubDrunkennessBefore)>>%</strong></p><<else>><p class="gym-stat-gain"><strong>You are already sober.</strong></p><</if>>
[[Return->Club Bathroom]]
<</nobr>><<nobr>>
<h2>An unexpected offer</h2>
<<if random(1, 2) is 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/reveal1.webp" alt="A stranger exposing himself through the gloryhole"><<else>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/reveal2.webp" alt="A stranger exposing himself through the gloryhole"><</if>>
<p>A stranger's cock pushes through the opening and hangs inside your stall. Whoever is on the other side waits silently for your response.</p>
<<say $mcname setup.getMcPortrait() "thought">>So that is what the hole is for. I can still walk away.<</say>>
[[Touch it->Club Bathroom Gloryhole Handjob]]<br>
<<link "Leave">><<if setup.rollClubBathroomLeaveInterception()>><<goto "Club Bathroom Stranger Breaks In 1">><<else>><<set $clubBathroomGloryholeActive to false>><<goto "Club Bathroom">><</if>><</link>>
<</nobr>><<nobr>>
<h2>Through the wall</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/handjob1.webp" alt="The main character touching the stranger through the gloryhole">
<p>You wrap your fingers around the stranger and begin stroking. His hips shift toward your hand, a muffled groan sounding from the other side of the partition.</p>
<<say $mcname setup.getMcPortrait() "thought">>He cannot even see me, and he is already desperate.<</say>>
[[Blow the stranger->Club Bathroom Gloryhole Blowjob]]<br>
[[Make him cum...->Club Bathroom Gloryhole Handjob Finish]]
<</nobr>><<nobr>>
<h2>A closer taste</h2>
<<switch random(1, 4)>><<case 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/blowjob1.webp" alt="The main character servicing the stranger through the gloryhole"><<case 2>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/blowjob2.webp" alt="The main character servicing the stranger through the gloryhole"><<case 3>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/blowjob3.webp" alt="The main character servicing the stranger through the gloryhole"><<case 4>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/blowjob4.webp" alt="The main character servicing the stranger through the gloryhole"><</switch>>
<p>You kneel and take the stranger into your mouth. His hand cannot reach you through the wall, leaving you in control of every wet stroke while his breathing grows ragged.</p>
<<say $mcname setup.getMcPortrait() "thought">>All I know about him is how he tastes and how badly he wants more.<</say>>
[[Undress and put it in...->Club Bathroom Gloryhole Sex]]<br>
[[Make him cum...->Club Bathroom Gloryhole Swallow Finish]]
<</nobr>><<nobr>>
<h2>Against the partition</h2>
<<if random(1, 2) is 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/sex1.webp" alt="The main character having sex through the gloryhole"><<else>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/sex2.webp" alt="The main character having sex through the gloryhole"><</if>>
<p>You strip below the waist, turn around, and guide the stranger inside you. The partition shudders as he thrusts from the other side, each impact forcing you tighter against the wall.</p>
<<say $mcname setup.getMcPortrait() "thought">>I cannot even see his face... only feel every inch of him.<</say>>
[[Let him cum inside->Club Bathroom Gloryhole Creampie Finish]]<br>
[[Finish him with your mouth->Club Bathroom Gloryhole Swallow Finish]]<br>
[[Finish him with your hand->Club Bathroom Gloryhole Handjob Finish]]
<</nobr>><<set _clubGloryholeDispositionChange to 0>><<set _clubGloryholeCorruptionChange to 0>>
<<if $clubBathroomGloryholeActive>><<set $clubBathroomGloryholeActive to false>><<set _clubGloryholeDispositionBefore to $dominance>><<set _clubGloryholeCorruptionBefore to $corruption>><<run setup.adjustDominance(-4, { notify: false })>><<run setup.adjustCorruption(2, { notify: false })>><<set _clubGloryholeDispositionChange to $dominance - _clubGloryholeDispositionBefore>><<set _clubGloryholeCorruptionChange to $corruption - _clubGloryholeCorruptionBefore>><<run UIBar.update()>><</if>>
<<nobr>>
<h2>Finished by hand</h2>
<<if random(1, 2) is 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/handjobcum1.webp" alt="The stranger climaxing from the main character's hand"><<else>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/handjobcum2.webp" alt="The stranger climaxing from the main character's hand"><</if>>
<p>Your grip quickens until the stranger finally spills. You release him once the last shudder passes, and his softening cock slips back through the wall.</p>
<<say $mcname setup.getMcPortrait() "thought">>Satisfied, anonymous, and gone. That might be the strangest service this club offers.<</say>>
<<if _clubGloryholeDispositionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--disposition stat-change-confirmation--decrease"><strong>Disposition <<print _clubGloryholeDispositionChange>></strong></p><</if>>
<<if _clubGloryholeCorruptionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--corruption stat-change-confirmation--increase"><strong>Corruption +<<print _clubGloryholeCorruptionChange>></strong></p><</if>>
[[Return->Club Bathroom Stall]]
<</nobr>><<set _clubGloryholeDispositionChange to 0>><<set _clubGloryholeCorruptionChange to 0>>
<<if $clubBathroomGloryholeActive>><<set $clubBathroomGloryholeActive to false>><<set _clubGloryholeDispositionBefore to $dominance>><<set _clubGloryholeCorruptionBefore to $corruption>><<run setup.adjustDominance(-4, { notify: false })>><<run setup.adjustCorruption(2, { notify: false })>><<set _clubGloryholeDispositionChange to $dominance - _clubGloryholeDispositionBefore>><<set _clubGloryholeCorruptionChange to $corruption - _clubGloryholeCorruptionBefore>><<run UIBar.update()>><</if>>
<<nobr>>
<h2>Swallowed</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/swallow1.webp" alt="The main character swallowing the stranger's climax">
<p>The stranger stiffens in your mouth and releases. You swallow, pull away, and watch him disappear through the partition once he has recovered.</p>
<<say $mcname setup.getMcPortrait() "thought">>He got exactly what he came here for. So did I.<</say>>
<<if _clubGloryholeDispositionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--disposition stat-change-confirmation--decrease"><strong>Disposition <<print _clubGloryholeDispositionChange>></strong></p><</if>>
<<if _clubGloryholeCorruptionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--corruption stat-change-confirmation--increase"><strong>Corruption +<<print _clubGloryholeCorruptionChange>></strong></p><</if>>
[[Return->Club Bathroom Stall]]
<</nobr>><<set _clubGloryholeDispositionChange to 0>><<set _clubGloryholeCorruptionChange to 0>>
<<if $clubBathroomGloryholeActive>><<set $clubBathroomGloryholeActive to false>><<set _clubGloryholeDispositionBefore to $dominance>><<set _clubGloryholeCorruptionBefore to $corruption>><<run setup.adjustDominance(-4, { notify: false })>><<run setup.adjustCorruption(2, { notify: false })>><<set _clubGloryholeDispositionChange to $dominance - _clubGloryholeDispositionBefore>><<set _clubGloryholeCorruptionChange to $corruption - _clubGloryholeCorruptionBefore>><<run UIBar.update()>><</if>>
<<nobr>>
<h2>Filled</h2>
<<if random(1, 2) is 1>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/sexcum1.webp" alt="The stranger climaxing inside the main character"><<else>><img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/sexcum2.webp" alt="The stranger climaxing inside the main character"><</if>>
<p>The stranger drives in deep and cums inside you. He remains there for a breathless moment before withdrawing through the wall, leaving you to dress and steady yourself.</p>
<<say $mcname setup.getMcPortrait() "thought">>No name. No face. Just this warm mess he left inside me.<</say>>
<<if _clubGloryholeDispositionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--disposition stat-change-confirmation--decrease"><strong>Disposition <<print _clubGloryholeDispositionChange>></strong></p><</if>>
<<if _clubGloryholeCorruptionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--corruption stat-change-confirmation--increase"><strong>Corruption +<<print _clubGloryholeCorruptionChange>></strong></p><</if>>
[[Return->Club Bathroom Stall]]
<</nobr>><<nobr>>
<h2>Cornered</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/breakin1.webp" alt="The stranger confronting the main character outside the stall">
<p>You leave the stall and nearly collide with the stranger waiting outside. Before you can call out, he forces you backward through the door and crowds into the cramped space with you.</p>
[[Continue->Club Bathroom Stranger Breaks In 2]]
<</nobr>><<nobr>>
<h2>Forced back inside</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/breakin2.webp" alt="The stranger restraining the main character in the stall">
<p>He pins you against the partition and drags your clothing aside. The shock still has your heart hammering, but his rough handling sends an unwelcome thrill through you. Your resistance falters as your body begins responding to the danger and pressure.</p>
<<say $mcname setup.getMcPortrait() "thought">>Damn it... why is this starting to feel good?<</say>>
[[Continue->Club Bathroom Stranger Breaks In 3]]
<</nobr>><<nobr>>
<h2>No room to escape</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/breakin3.webp" alt="The stranger assaulting the main character in the stall">
<p>The stranger forces his way inside and drives you against the stall wall. There is barely enough room to brace yourself, yet pleasure now cuts through the last of your shock. Despite how this began, you catch yourself moving with his thrusts and biting back a moan.</p>
<<say $mcname setup.getMcPortrait() "thought">>I should hate this... but my body wants him to keep going.<</say>>
[[Continue->Club Bathroom Stranger Breaks In 4]]
<</nobr>><<nobr>>
<h2>Used in silence</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/breakin4.webp" alt="The assault continuing in the bathroom stall">
<p>His pace turns rougher as he nears the end. Instead of pulling away, you press back against him, your muffled moans disappearing beneath the music while the pleasure builds.</p>
<<say $mcname setup.getMcPortrait() "thought">>Harder... if he's going to use me, he might as well make me enjoy it.<</say>>
[[Continue->Club Bathroom Stranger Breaks In 5]]
<</nobr>><<set _clubGloryholeDispositionChange to 0>><<set _clubGloryholeCorruptionChange to 0>>
<<if $clubBathroomGloryholeActive>><<set $clubBathroomGloryholeActive to false>><<set _clubGloryholeDispositionBefore to $dominance>><<set _clubGloryholeCorruptionBefore to $corruption>><<run setup.adjustDominance(-4, { notify: false })>><<run setup.adjustCorruption(2, { notify: false })>><<set _clubGloryholeDispositionChange to $dominance - _clubGloryholeDispositionBefore>><<set _clubGloryholeCorruptionChange to $corruption - _clubGloryholeCorruptionBefore>><<run UIBar.update()>><</if>>
<<nobr>>
<h2>Left behind</h2>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bathroom/breakin5.webp" alt="The stranger climaxing inside the main character before leaving">
<p>The stranger holds you in place and cums inside you. A final shudder runs through your body before he abruptly pulls away and slips back into the crowd, leaving you flushed and breathless in the stall.</p>
<<say $mcname setup.getMcPortrait() "thought">>I can't believe I started enjoying that... I need to straighten myself out and leave.<</say>>
<<if _clubGloryholeDispositionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--disposition stat-change-confirmation--decrease"><strong>Disposition <<print _clubGloryholeDispositionChange>></strong></p><</if>>
<<if _clubGloryholeCorruptionChange isnot 0>><p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--corruption stat-change-confirmation--increase"><strong>Corruption +<<print _clubGloryholeCorruptionChange>></strong></p><</if>>
[[Leave the stall->Club Bathroom]]
<</nobr>><<nobr>>
<h2>Talk to Coco</h2>
<<switch random(1, 6)>>
<<case 1>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>The floor is running smoothly. A few patrons think money excuses poor manners, but I have ways of correcting that impression.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Professional ways, I hope.<</say>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>Always. A pleasant smile makes a firm escort to the door feel almost courteous.<</say>>
<<case 2>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>Your staff respond well to clear expectations. Praise in public, correction in private, payment precisely on time.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>You make managing this place sound easy.<</say>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>Looking effortless is part of what you pay me for.<</say>>
<<case 3>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>We have three promising regulars at the bar tonight. One likes the music, one likes our dancers, and one keeps asking when the owner will appear.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Which one should concern me?<</say>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>The last one is attractive, so I volunteered to investigate personally.<</say>>
<<case 4>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>Men spend more when they believe they are impressive. Women spend more when the company is worth staying for. Fortunately, I understand both.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Is that management theory or personal experience?<</say>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>The best management theory usually is.<</say>>
<<case 5>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>I moved the dancers' breaks away from the busiest service window. Popularity is useful, but exhausted employees do not remain charming for long.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Good. Keep the place profitable without grinding everyone down.<</say>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>Competent, humane, and profitable. I do enjoy an ambitious brief.<</say>>
<<case 6>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>You built something desirable out of a ruin. That attracts patrons—and people wondering whether its owner is equally interesting.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Are you included in that second group?<</say>>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>I am your Manager. I know better than to answer without considering the consequences.<</say>>
<</switch>>
[[Return->Warehouse Manager Office]]
<</nobr>><<nobr>>
<<set _cocoEncounterType to setup.getCocoOfficeEncounterType()>>
<h2>The office is occupied</h2>
<<if _cocoEncounterType is "man">>
<p>You open the office door and immediately discover that Coco has taken a man back here. Bent over her desk, she is being thoroughly ploughed while the orderly paperwork trembles beneath her hands.</p>
<video class="scene-image" src="media/locations/middlecity/warehouse/manager/encounter/officesexman.mp4" autoplay loop muted controls playsinline></video>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>Oh—fuck... yes, keep going...<</say>>
<<say $mcname setup.getMcPortrait() "thought">>So much for discussing tonight's accounts. She certainly knows how to enjoy her office.<</say>>
<<else>>
<p>You open the office door and find Coco entwined with a woman across her desk. Their clothes are scattered around the chair while Coco's professional composure dissolves into breathless moans.</p>
<video class="scene-image" src="media/locations/middlecity/warehouse/manager/encounter/officesexwoman.mp4" autoplay loop muted controls playsinline></video>
<<say "Coco" "media/locations/middlecity/warehouse/manager/coco.jpg" "coco">>Mmm... right there. Don't you dare stop.<</say>>
<<say $mcname setup.getMcPortrait() "thought">>Coco really does take a personal interest in every kind of patron. I should give her some privacy.<</say>>
<</if>>
[[Return later->Warehouse]]
<</nobr>><<nobr>>
<h2>Building management</h2>
<<if setup.isWarehouseFullyCleaned()>>
<p>The initial clean-up is complete. With every area cleared, you can begin planning how the Warehouse will be renovated, staffed, and operated.</p>
<<else>>
<p>Coordinate the long process of turning the neglected Warehouse into a functional base of operations.</p>
<</if>>
<img class="scene-image" @src="setup.getWarehouseMainHallImage()" alt="The Warehouse main hall awaiting renovation">
<<warehouseManagementUI>>
[[Return->Warehouse]]
<</nobr>><<if setup.tryBradfordScentEncounter("Warehouse My Room")>><<goto "Bradford Scent Encounter">><</if>>
<<nobr>>
<h2>My room</h2>
<<if setup.getWarehousePartner()>>
<p>You now share this room with <<print setup.getPartnerDisplayName(setup.getWarehousePartner())>>. Your belongings have settled together around the comfortable space you made from the old Warehouse quarters.</p>
<<say $mcname setup.getMcPortrait() "thought">>This isn't only a base anymore. This is our room—our home.<</say>>
<<elseif setup.isWarehouseCleanUpComplete("mcRoom")>>
<p>After several determined cleaning sessions, your room has become a comfortable personal space among the Warehouse's industrial remains.</p>
<<say $mcname setup.getMcPortrait() "thought">>Now this feels like my room. A little chaotic, maybe—but mine.<</say>>
<<else>>
<p>Your room is still rudimentary, but it is private, secure, and entirely yours to shape.</p>
<<say $mcname setup.getMcPortrait() "thought">>Not much to look at yet. Still... this might become something good.<</say>>
<</if>>
<img class="scene-image" @src="setup.getWarehouseMcRoomImage()" alt="The main character's room in the Warehouse">
<<if setup.getWarehousePartner()>>[[Bed->Warehouse Shared Bed]]<br><</if>>
[[Sofa->Warehouse Sofa]]<br>
[[Wardrobe->Warehouse Wardrobe]]<br>
[[Equipment->Warehouse Equipment]]<br>
[[Exercise->Warehouse Exercise]]<br>
<<if setup.isWarehouseNightclubComplete() && setup.isWarehouseRoomComplete("bathroom")>>[[Bathroom->Warehouse Bathroom]]<br><</if>>
<<if setup.isWarehouseNightclubComplete() && setup.isWarehouseRoomComplete("kitchen")>>[[Kitchen->Warehouse Kitchen]]<br><</if>>
<<if setup.isDressedForWarehouseCommonAreas()>>
[[Hall->Warehouse]]
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="You need to put on an outfit before leaving your room.">Hall</span>
<</if>>
<</nobr>><<nobr>>
<h2>Wardrobe</h2>
[[Back->Warehouse My Room]]
<div id="wardrobe-ui"><<wardrobeUI "outfits">></div>
<</nobr>><<nobr>>
<h2>Equipment</h2>
[[Back->Warehouse My Room]]
<div id="combat-loadout-ui"><<combatEquipmentUI>></div>
<</nobr>><<nobr>>
<h2>Sofa</h2>
<<say $mcname setup.getMcPortrait() "thought">>At least I have somewhere to sit while we turn this place into a proper base.<</say>>
<<if !setup.getWarehousePartner()>><<if setup.canSleepNow()>>
[[Sleep->Warehouse Sleep]]<br>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getSleepLockMessage()">Sleep</span><br>
<</if>><</if>>
<<if setup.canPerformDayPhaseAction("nap")>>
<<link "Nap" "Warehouse Nap">><<run setup.advanceDayPhasesForAction("nap")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('nap')">Nap</span>
<</if>><br>
<<if setup.canNapUntilNight()>><<link "Nap until Night" "Warehouse Nap">><<run setup.advanceToNight()>><</link>><br><</if>>
<<if !setup.isWarehouseCleanUpComplete("mcRoom")>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="You need to finish cleaning your room before setting up the TV.">Watch TV</span>
<<elseif setup.canPerformDayPhaseAction("watchTv")>>
<<link "Watch TV">><<run setup.advanceDayPhasesForAction("watchTv")>><<goto setup.getWarehouseWatchTvDestination()>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('watchTv')">Watch TV</span>
<</if>><br>
[[Stand up->Warehouse My Room]]
<</nobr>><<nobr>>
<h2>A short rest</h2>
<p>You settle onto the sofa and let the quiet warehouse fade around you.</p>
<<switch random(1, 2)>>
<<case 1>><img class="scene-image" src="media/myroom/sleep/napping/nap1.jpg" alt="The main character napping">
<<case 2>><img class="scene-image" src="media/myroom/sleep/napping/nap2.jpg" alt="The main character napping">
<</switch>>
<<link "Wake up">><<goto setup.getWarehouseNapWakeDestination()>><</link>>
<</nobr>><<nobr>>
<h2>A noisy awakening</h2>
<p>A muffled thump from Irine's room drags you out of your nap. It is followed by the unmistakable rhythm of furniture striking the wall—and Irine making no effort to keep quiet.</p>
<img class="scene-image" src="media/locations/middlecity/warehouse/napwakeup.jpg" alt="Irine having fun with a man in her room">
<<say $mcname setup.getMcPortrait() "thought">>Apparently Irine is getting thoroughly dicked down. Good for her, I suppose. So much for a quiet nap.<</say>>
<p>You sigh, straighten yourself out, and retreat to your room to give her some privacy.</p>
[[Return to your room->Warehouse My Room]]
<</nobr>><<run setup.soberUp()>><<run setup.advanceGameDay()>><<run UIBar.update()>>
<<nobr>>
<h2>Sleep</h2>
<p>You lock your door, settle in for the night, and sleep until morning.</p>
<<switch random(1, 5)>>
<<case 1>><img class="scene-image" src="media/myroom/sleep/sleeping/1.webp" alt="The main character sleeping">
<<case 2>><img class="scene-image" src="media/myroom/sleep/sleeping/2.webp" alt="The main character sleeping">
<<case 3>><img class="scene-image" src="media/myroom/sleep/sleeping/3.webp" alt="The main character sleeping">
<<case 4>><img class="scene-image" src="media/myroom/sleep/sleeping/4.webp" alt="The main character sleeping">
<<case 5>><img class="scene-image" src="media/myroom/sleep/sleeping/5.webp" alt="The main character sleeping">
<</switch>>
[[Wake up->Warehouse My Room]]
<</nobr>><<nobr>>
<h2>Exercise</h2>
<<say $mcname setup.getMcPortrait() "thought">>There is plenty of empty floor here. I might as well use some of it.<</say>>
<<if setup.hasDoneHulaToday()>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="You have already practised Hula today.">Hula</span>
<<else>>
<<link "Hula">><<run setup.completeDailyHula()>><<goto "Warehouse Hula">><</link>>
<</if>><br>
<<link "Different kind of exercise...">><<run setup.completeHomeMasturbation()>><<run UIBar.update()>><<goto setup.getWarehouseMasturbationDestination()>><</link>><br>
[[Return->Warehouse My Room]]
<</nobr>><<nobr>>
<h2>Hula</h2>
<<say $mcname setup.getMcPortrait() "thought">>All this open space might finally be useful.<</say>>
<<switch random(1, 4)>>
<<case 1>><video src="media/myroom/exercise/1.mp4" autoplay loop controls></video>
<<case 2>><video src="media/myroom/exercise/2.mp4" autoplay loop controls></video>
<<case 3>><video src="media/myroom/exercise/3.mp4" autoplay loop controls></video>
<<case 4>><video src="media/myroom/exercise/4.mp4" autoplay loop controls></video>
<</switch>>
<<if $hulaLastGain > 0>><p class="gym-stat-gain"><strong>Agility +1</strong></p><<else>><p class="gym-stat-gain"><strong>Agility is already at its maximum.</strong></p><</if>>
[[Finish->Warehouse Exercise]]
<</nobr>><<nobr>>
<h2>Private exercise</h2>
<<say $mcname setup.getMcPortrait() "thought">>At least nobody should disturb me here.<</say>>
<<switch random(1, 6)>>
<<case 1>><video src="media/myroom/exercise/masturbate1.mp4" autoplay loop controls></video>
<<case 2>><video src="media/myroom/exercise/masturbate2.mp4" autoplay loop controls></video>
<<case 3>><video src="media/myroom/exercise/masturbate3.mp4" autoplay loop controls></video>
<<case 4>><video src="media/myroom/exercise/masturbate4.mp4" autoplay loop controls></video>
<<case 5>><video src="media/myroom/exercise/masturbate5.mp4" autoplay loop controls></video>
<<case 6>><video src="media/myroom/exercise/masturbate6.mp4" autoplay loop controls></video>
<</switch>>
<<if $masturbationConstitutionResult is "gained">><p class="gym-stat-gain"><strong>Constitution +1</strong></p><<elseif $masturbationConstitutionResult is "maximum">><p class="gym-stat-gain"><strong>Constitution is already at its maximum.</strong></p><<else>><p class="gym-stat-gain"><strong>You have already gained Constitution from this today.</strong></p><</if>>
[[Finish->Warehouse Exercise]]
<</nobr>><<nobr>>
<h2>Irine's room</h2>
<<if setup.isWarehouseCleanUpComplete("irineRoom")>>
<p>With the grime and abandoned papers removed, Irine has turned her restored room into a compact office and private quarters. Neatly arranged files surround a terminal glowing on the desk.</p>
<<else>>
<p>Irine has claimed this neglected room as her quarters and temporary office, though dust and abandoned papers still cover much of it.</p>
<</if>>
<img class="scene-image" @src="setup.getWarehouseIrineRoomImage()" alt="Irine's room in the Warehouse">
[[Talk with Irine->Warehouse Talk With Irine]]<br>
[[Return->Warehouse]]
<</nobr>><<nobr>>
<h2>Talk with Irine</h2>
<<if setup.isWarehouseCoreRenovationComplete()>>
<<set _irineConversation to setup.getWarehouseIrineConversation()>>
<<for _irineLine range _irineConversation>>
<<say _irineLine.name _irineLine.image _irineLine.theme>><<print _irineLine.text>><</say>>
<</for>>
<<else>>
<<switch random(1, 6)>>
<<case 1>>
<<say "Irine" "media/characters/irine.jpg" "irine">>A good lead is worth more than a loaded weapon. Unfortunately, most people only learn that after drawing one.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I suppose that is why you collect information and send other people into danger.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>You are learning quickly.<</say>>
<<case 2>>
<<say $mcname setup.getMcPortrait() "jane">>Do you ever stop working?<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>I stop when the work is finished. It rarely has the courtesy to remain finished.<</say>>
<<case 3>>
<<say "Irine" "media/characters/irine.jpg" "irine">>The middle city is safer than the Slums, not safe. Do not let cleaner streets lower your guard.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I was beginning to enjoy not checking every shadow.<</say>>
<<case 4>>
<<say $mcname setup.getMcPortrait() "jane">>This warehouse is going to take forever to fix.<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>Then we should begin before forever gets any longer.<</say>>
<<case 5>>
<<say "Irine" "media/characters/irine.jpg" "irine">>My client is patient when patience costs him nothing. We should not assume that will last.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Comforting as always, Irine.<</say>>
<<case 6>>
<<say $mcname setup.getMcPortrait() "jane">>Did you really think c30000 was cheap?<</say>>
<<say "Irine" "media/characters/irine.jpg" "irine">>For this district? Painfully cheap. You will understand once you see what respectable property costs.<</say>>
<</switch>>
<</if>>
[[Return->Warehouse Irine Room]]
<</nobr>><<nobr>>
<h2>Cleaning the Warehouse</h2>
<<if $warehouseCleanupResult && $warehouseCleanupResult.ok>>
<<say $mcname setup.getMcPortrait() "thought">>We bought an entire warehouse. Apparently, we also bought every layer of dust ever produced in Suns End.<</say>>
<<switch random(1, 7)>>
<<case 1>><video src="media/slumshome/cleaning/cleaning1.mp4" autoplay loop controls></video>
<<case 2>><video src="media/slumshome/cleaning/cleaning2.mp4" autoplay loop controls></video>
<<case 3>><video src="media/slumshome/cleaning/cleaning3.mp4" autoplay loop controls></video>
<<case 4>><video src="media/slumshome/cleaning/cleaning4.mp4" autoplay loop controls></video>
<<case 5>><img class="scene-image" src="media/slumshome/cleaning/cleaning5.gif" alt="Cleaning the warehouse">
<<case 6>><img class="scene-image" src="media/slumshome/cleaning/cleaning6.gif" alt="Cleaning the warehouse">
<<case 7>><img class="scene-image" src="media/slumshome/cleaning/cleaning7.gif" alt="Cleaning the warehouse">
<</switch>>
<<if setup.isWarehouseFullyCleaned()>>
<<say $mcname setup.getMcPortrait() "thought">>That's the last of it. The whole Warehouse is finally clean. Now we can start turning it into something worthwhile.<</say>>
<<elseif $warehouseCleanupResult.completed>>
<<say $mcname setup.getMcPortrait() "thought">><<print setup.getWarehouseCleanUpAreaLabel($warehouseCleanupResult.area)>> is finally clear. One entire part of this place is ready for whatever comes next.<</say>>
<<else>>
<<say $mcname setup.getMcPortrait() "thought">>One more part of <<print setup.getWarehouseCleanUpAreaLabel($warehouseCleanupResult.area)>> looks less condemned. Progress is progress.<</say>>
<</if>>
<p class="warehouse-cleanup-result"><strong><<print setup.getWarehouseCleanUpAreaLabel($warehouseCleanupResult.area)>>:</strong> <<print $warehouseCleanupResult.progress>> / <<print $warehouseCleanupResult.target>><<if $warehouseCleanupResult.completed>> — Clean-up complete.<</if>></p>
<<else>>
<p class="table-order-error">No cleaning task was selected.</p>
<</if>>
[[Finish->Warehouse Building Management]]
<</nobr>><<if setup.tryBradfordScentEncounter("Warehouse Bathroom")>><<goto "Bradford Scent Encounter">><</if>>
<<nobr>>
<h2>Bathroom</h2>
<p>The newly renovated bathroom is clean, private, and refreshingly free of exposed pipes and unreliable plumbing.</p>
<img class="scene-image" src="media/locations/middlecity/warehouse/bathroom.jpg" alt="The renovated Warehouse bathroom">
<<link "Shower">><<goto setup.getWarehouseShowerDestination()>><</link>><br>
[[Mirror->Warehouse Mirror]]<br>
<<if setup.isWarehouseNightclubComplete()>>[[Return to your room->Warehouse My Room]]<<else>>[[Hall->Warehouse]]<</if>>
<</nobr>><<nobr>>
<h2>Shower</h2>
<p>You step beneath the hot water and wash away the dust and grime of the day.</p>
<<switch random(1, 3)>>
<<case 1>><video src="media/bathroom/shower1.mp4" autoplay loop controls></video>
<<case 2>><video src="media/bathroom/shower2.mp4" autoplay loop controls></video>
<<case 3>><video src="media/bathroom/shower3.mp4" autoplay loop controls></video>
<</switch>>
[[Return->Warehouse Bathroom]]
<</nobr>><<nobr>>
<h2>Mirror</h2>
<<say $mcname setup.getMcPortrait() "thought">>A new district and a new base. I should make sure I still recognise the woman in the mirror.<</say>>
<img class="mirror-portrait-image" @src="setup.getMcPortrait()" data-mc-portrait alt="The main character looking in the mirror">
<<linkreplace "Undress">>
<<say $mcname setup.getMcPortrait() "thought">><<print setup.getMirrorBodyThought("breastSize")>><</say>>
<img class="mirror-body-image" @src="setup.getBodyCosmeticImage('breastSize')" alt="The main character's breasts">
<<say $mcname setup.getMcPortrait() "thought">><<print setup.getPubicHairThought()>><</say>>
<img class="mirror-body-image" @src="setup.getPubicHairImage()" alt="The main character's pussy">
<<say $mcname setup.getMcPortrait() "thought">><<print setup.getMirrorBodyThought("assSize")>><</say>>
<img class="mirror-body-image" @src="setup.getBodyCosmeticImage('assSize')" alt="The main character's ass">
<</linkreplace>><br>
[[Shave->Warehouse Shave]]<br>
[[Return->Warehouse Bathroom]]
<</nobr>><<nobr>>
<h2>Shave</h2>
<p>You prepare your razor and decide how much hair you want to remove. A longer style will only become available after it grows naturally.</p>
<div id="shave-ui"><<shaveMenu>></div>
[[Return->Warehouse Mirror]]
<</nobr>><<if setup.tryBradfordScentEncounter("Warehouse Kitchen")>><<goto "Bradford Scent Encounter">><</if>>
<<nobr>>
<h2>Kitchen</h2>
<p>The renovated kitchen gives the Warehouse a reliable place to prepare meals and clean up afterward.</p>
<img class="scene-image" src="media/locations/middlecity/warehouse/kitchen.jpg" alt="The renovated Warehouse kitchen">
<<if setup.hasCompletedWarehouseChoreToday("cook")>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="You have already cooked a meal today.">Cook Meal</span>
<<elseif setup.canPerformDayPhaseAction("cookMeal")>>
<<link "Cook Meal" "Warehouse Cooking">><<run setup.completeWarehouseChore("cook")>><<run setup.advanceDayPhasesForAction("cookMeal")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('cookMeal')">Cook Meal</span>
<</if>><br>
<<if setup.hasCompletedWarehouseChoreToday("dishes")>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="You have already done the dishes today.">Do dishes</span>
<<elseif setup.canPerformDayPhaseAction("dishes")>>
<<link "Do dishes">><<run setup.completeWarehouseChore("dishes")>><<run setup.advanceDayPhasesForAction("dishes")>><<goto setup.getWarehouseDishesDestination()>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('dishes')">Do dishes</span>
<</if>><br>
<<if setup.isWarehouseNightclubComplete()>>[[Return to your room->Warehouse My Room]]<<else>>[[Hall->Warehouse]]<</if>>
<</nobr>><<nobr>>
<h2>Cooking</h2>
<<if setup.getWarehousePartner() is "bradford">>
<p>You gather the available ingredients while Bradford clears a space at the table. He tries to help until you catch him reaching for the wrong seasoning and firmly send him back to setting out the plates.</p>
<<else>>
<p>You gather the available ingredients and prepare a simple meal in the new kitchen.</p>
<</if>>
<<switch random(1, 2)>>
<<case 1>><video src="media/kitchen/cooking/cooking1.mp4" autoplay loop controls muted playsinline></video>
<<case 2>><video src="media/kitchen/cooking/cooking2.mp4" autoplay loop controls muted playsinline></video>
<</switch>>
<<if setup.getWarehousePartner() is "bradford">>
<<say $mcname setup.getMcPortrait() "jane">>Food's ready. And no, tasting half of it while I cooked doesn't count as dinner.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Quality control, love. A responsible man makes sure the cook's work is safe.<</say>>
[[Eat together->Warehouse Eating]]
<<else>>
[[Eat meal->Warehouse Eating]]
<</if>>
<</nobr>><<nobr>>
<<if setup.getWarehousePartner() is "bradford">>
<h2>Dinner together</h2>
<p>You present the meal and sit beside Bradford. The cavernous Warehouse feels warmer once the two of you begin eating together.</p>
<<else>>
<h2>Eat</h2>
<<say $mcname setup.getMcPortrait() "thought">>A proper kitchen already makes this place feel more like a home.<</say>>
<</if>>
<<switch random(1, 5)>>
<<case 1>><img class="scene-image" src="media/kitchen/eating/eating1.webp" alt="Eating a meal">
<<case 2>><img class="scene-image" src="media/kitchen/eating/eating2.webp" alt="Eating a meal">
<<case 3>><img class="scene-image" src="media/kitchen/eating/eating3.webp" alt="Eating a meal">
<<case 4>><img class="scene-image" src="media/kitchen/eating/eating4.webp" alt="Eating a meal">
<<case 5>><img class="scene-image" src="media/kitchen/eating/eating5.webp" alt="Eating a meal">
<</switch>>
<<if setup.getWarehousePartner() is "bradford">>
<<switch random(1, 3)>>
<<case 1>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You keep feeding me like this and I'll start thinking you want me spoiled.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>You? Spoiled? I think your ego got there before my cooking did.<</say>>
<<case 2>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Excellent meal. Although the cook still looks like the most tempting thing in this kitchen.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Eat what's on your plate, troublemaker.<</say>>
<<case 3>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>This place is starting to feel like a home. You did that.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>We did. I only made sure neither of us starved tonight.<</say>>
<</switch>>
<p>Bradford's hand settles briefly over yours before you finish the meal together.</p>
<</if>>
<<link "Finish">><<goto setup.getWarehouseMealDestination()>><</link>>
<</nobr>><<nobr>>
<h2>Watch TV</h2>
<<switch random(1, 4)>>
<<case 1>><img class="scene-image" src="media/arthursroom/tv/tv1.webp" alt="Watching television in the Warehouse">
<<case 2>><img class="scene-image" src="media/arthursroom/tv/tv2.webp" alt="Watching television in the Warehouse">
<<case 3>><img class="scene-image" src="media/arthursroom/tv/tv3.webp" alt="Watching television in the Warehouse">
<<case 4>><img class="scene-image" src="media/arthursroom/tv/tv4.webp" alt="Watching television in the Warehouse">
<</switch>>
<<if setup.getWarehousePartner()>>
<p>You relax beside <<print setup.getPartnerDisplayName(setup.getWarehousePartner())>>, letting the noise of the program fill the renovated building.</p>
<<else>>
<p>You let the noise of the program fill the old Warehouse for a while.</p>
<</if>>
[[Return->Warehouse Sofa]]
<</nobr>><<nobr>>
<h2>Do dishes</h2>
<<if setup.getWarehousePartner() is "bradford">>
<p>You take charge of washing while Bradford dries each plate and finds its place in the still-unfamiliar cupboards.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Cooking and cleaning? Careful, love. You're making me look useless in my own home.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Our home. And you can protect your reputation by drying those faster.<</say>>
<<else>>
<<say $mcname setup.getMcPortrait() "thought">>New kitchen, same inevitable pile of dishes.<</say>>
<</if>>
<<switch random(1, 5)>>
<<case 1>><img class="scene-image" src="media/kitchen/dishes/dishes1.webp" alt="Doing dishes">
<<case 2>><img class="scene-image" src="media/kitchen/dishes/dishes2.webp" alt="Doing dishes">
<<case 3>><img class="scene-image" src="media/kitchen/dishes/dishes3.webp" alt="Doing dishes">
<<case 4>><img class="scene-image" src="media/kitchen/dishes/dishes4.webp" alt="Doing dishes">
<<case 5>><img class="scene-image" src="media/kitchen/dishes/dishes5.webp" alt="Doing dishes">
<</switch>>
[[Finish->Warehouse Kitchen]]
<</nobr>><<set $districtTheme to "middle-city">><<run setup.applyDistrictTheme()>>
<<set $districtEncounterReturnPassage to "Middle-City">>
<<set _middleCityEncounter to setup.rollMiddleCityProtectorateEncounter()>>
<<if _middleCityEncounter>>
<<set $pendingCombatEncounter to _middleCityEncounter.enemyName>>
<<set $pendingCombatEncounterFaction to _middleCityEncounter.faction>>
<<goto _middleCityEncounter.passage>>
<</if>>
<<nobr>>
<h2>Middle-City</h2>
<p>Maintained towers, orderly streets, and blue-white lights make the middle section feel like a different city from the Slums below.</p>
<img class="scene-image" src="media/locations/middlecity/middlecity.jpg" alt="The middle section of Suns End">
[[Warehouse]]<br>
[[Gym->Middle-City Gym]]<br>
[[Maglev Train Station->Middle-City Maglev Station]]
<</nobr>><h2>Gym</h2>
<p>A clean, well-maintained gym serves the residents of the middle city. Its equipment is newer than what you are used to in the Slums, though the work demanded from your body remains the same.</p>
<img class="scene-image" src="media/locations/gym/gym.jpeg" alt="Middle-city gym">
<<nobr>>
<<set _gymLockMessage to setup.getGymWorkoutLockMessage()>>
<<if _gymLockMessage>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="_gymLockMessage">Work out</span>
<<else>>
<<link "Work out">>
<<set _gymPreparation to setup.prepareGymWorkout({ returnPassage: "Middle-City Gym", allowRelationshipTraining: setup.canTrainWithPartnerAtGym("middle-city") })>>
<<if _gymPreparation.ok>><<goto "Gym Training">><</if>>
<</link>>
<</if>><br>
<<link "Shower">><<set _gymShower to setup.prepareGymShower(undefined, { returnPassage: "Middle-City Gym" })>><<goto _gymShower.destination>><</link>><br>
[[Outside->Middle-City]]
<</nobr>><<nobr>>
<h2>Maglev Train Station</h2>
<p>Fast maglev lines connect the middle city to the lower district. A single journey costs c50.</p>
<<if setup.canTravelByMaglev(false)>>
<<link "Slums" "Maglev Journey To Slums">><<set _maglevTrip to setup.travelByMaglev("slums")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getMaglevTravelLockMessage(false)">Slums</span>
<</if>><br>
[[Outside->Middle-City]]
<</nobr>><<nobr>>
<h2>Maglev Train Station</h2>
<p>The local platform offers a direct connection to the middle city for c50.</p>
<<if setup.canTravelByMaglev(false)>>
<<link "Middle-City" "Maglev Journey To Middle-City">><<set _maglevTrip to setup.travelByMaglev("middle-city")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getMaglevTravelLockMessage(false)">Middle-City</span>
<</if>><br>
[[Outside->Slums]]
<</nobr>><<nobr>>
<h2>Return to the Slums</h2>
<p>You pay c50 and board the maglev. Clean towers give way to corroded walls, exposed conduits, and the familiar haze of the lower district.</p>
[[Leave the station->Slums]]
<</nobr>><<nobr>>
<h2>Travel to the middle city</h2>
<p>You pay c50 and board the maglev. The battered Slums recede as maintained buildings and clean blue-white lights rise beyond the windows.</p>
<img class="scene-image" src="media/locations/middlecity/middlecity.jpg" alt="The middle section of Suns End">
[[Leave the station->Middle-City]]
<</nobr>><div class="age-gate-panel">
<p>Warning: This game contains content that is not suitable for minors. By clicking "I am not 18 years old or older.", you acknowledge that you are at least 18 years old or older.</p>
<div id="age-gate-actions" class="age-gate-actions">
<<button "I am 18 years old or older.">><<goto "Start">><</button>>
<<button "I am not 18 years old or older.">>
<<replace "#age-gate-actions">><p id="age-gate-actions" class="age-gate-rejected" role="status">Please close the tab.</p><</replace>>
<</button>>
</div>
</div><img class="opening-game-banner" src="media/banner/banneronly.png" alt="Trouble in Suns End">
<div class="opening-prologue">
<p>The Protectorate did not begin on Arda. Thousands of years ago, four immense life ships crossed into this galaxy through a wormhole that closed behind them without warning. Only three endured. Cut off from everything they had known, their survivors settled Arda and built an empire from the remains of their journey.</p>
<p>By the time humanity returned to the stars, the old voyage had become sacred history. The discovery of the surviving Eldar life ship on Veniol reunited two peoples from the lost galaxy, and together they pushed the Protectorate across the known worlds beneath the banners of progress, security, and unity.</p>
<p>At its summit stand the Grand Three: the Emperor and the current Human and Eldar Grand Commanders. Senators speak for the Empire's districts, but the Grand Three command its armies, laws, and future. Research drives expansion, Peacekeepers preserve order, and the Protectorate's watchful systems remind every citizen that loyalty keeps civilization alive.</p>
<p>Suns End is proclaimed the jewel of western Arda. Its Lord-Governor, Marshall Arathar Trangendin—the Dawn Blade—is himself the Human Grand Commander and one of the Grand Three. Travel holos promise a city of opportunity beneath his protection.</p>
<p>At least, that is what they promised before you came here.</p>
</div>
<<nobr>>
<div class="opening-actions">
<<button "Tutorial">><<goto "Tutorial">><</button>>
[[Continue->Space Port]]
</div>
<</nobr>><img class="scene-image" src="media/locations/landscape/sunsend.jpg" alt="The city of Suns End">
<p>The lower spaceport deposits you beneath the city proper with one small credit balance, a few personal belongings, and the hope of starting over. Every respectable district is far beyond your budget. If you want a roof tonight, the Slums are your only realistic choice.</p>\
[[Slums->Slums Arrival]]<img class="scene-image" src="media/locations/slums/slums.jpg" alt="The Slums of Suns End">
<p>The descent into the Slums strips the shine from every promise you heard about Suns End. Towers crowd out the sky, refuse gathers beneath rusted walkways, and reputable citizens hurry through without looking back. You find the nearest public data panel and begin searching for somewhere—anywhere—you can afford to sleep.</p>\
[[Data panel]]<p>The public data panel is cracked, greasy, and several updates out of date. Its display stutters beneath your touch, but it is the only housing terminal nearby.</p>\
<<linkreplace "Touch the panel">>\
The panel flickers reluctantly to life.
<p><strong>Identity not recognized. Please insert your ID card into the reader.</strong></p>\
<p>You wipe the reader with your sleeve, take out your citizen ID, and carefully slide it into the slot.</p>\
<label>\
Name:
<<textbox "$mcname" $mcname>>\
</label>\
<span id="name-error"></span>
<<button "Confirm name">>\
<<set $mcname to $mcname.trim()>>\
<<if $mcname is "">>\
<<replace "#name-error">>\
<span id="name-error" class="name-error">\
Error. Provide a name.\
</span>\
<</replace>>\
<<else>>\
<<goto "Character Data Panel">>\
<</if>>\
<</button>>\
<</linkreplace>>\<<nobr>>
<<set _address to setup.parseCharacterAddress($mchomeaddress)>>
<div class="character-info character-data-record">
<header class="character-info-header">
<h2>Character Profile</h2>
<div class="character-info-registry-mark">
<p>Citizen record</p>
<img src="media/ui/character-info/protectorate-emblem.svg" alt="Protectorate emblem">
</div>
</header>
<div class="character-info-layout">
<aside class="character-info-summary">
<img class="character-info-portrait" @src="setup.getMcPortrait()" data-mc-portrait alt="">
<strong class="character-info-name">$mcname Savino</strong>
</aside>
<section class="character-info-section">
<h3><img class="character-info-category-icon" src="media/ui/character-info/personal.svg" alt="">Personal Details</h3>
<dl class="character-info-fields">
<div><dt>Full name</dt><dd>$mcname Savino</dd></div>
<div><dt>Age</dt><dd>$mcage</dd></div>
<div><dt>Gender</dt><dd>Female</dd></div>
<div><dt>Race</dt><dd>Human</dd></div>
<div><dt>Eye color</dt><dd>$mceyecolor</dd></div>
<div><dt>Marital status</dt><dd>$mcmartialstatus</dd></div>
<div><dt>Occupation</dt><dd><<print setup.getOccupationDisplay()>></dd></div>
</dl>
</section>
<section class="character-info-section">
<h3><img class="character-info-category-icon" src="media/ui/character-info/registration.svg" alt="">Registration</h3>
<div class="character-info-address-block">
<h4>Permanent address</h4>
<dl class="character-info-fields">
<div><dt>Planet</dt><dd><<print _address.planet>></dd></div>
<div><dt>City</dt><dd><<print _address.city>></dd></div>
<div><dt>Street</dt><dd><<print _address.street>></dd></div>
<div><dt>Building</dt><dd><<print _address.building>></dd></div>
<div><dt>Residence</dt><dd><<print _address.residence>></dd></div>
</dl>
</div>
<div class="character-info-address-block character-info-address-block--birthplace">
<h4>Birthplace</h4>
<dl class="character-info-fields">
<div><dt>Planet</dt><dd>Hedexus V</dd></div>
<div><dt>City</dt><dd>Trexuria</dd></div>
</dl>
</div>
</section>
<section class="character-info-section">
<h3><img class="character-info-category-icon" src="media/ui/character-info/records.svg" alt="">Records</h3>
<div class="character-info-record-row">
<span>Peacekeeper record</span>
<strong class="character-info-record-status character-info-record-status--clear">Not wanted</strong>
</div>
<div class="character-info-record-row">
<span>Health insurance</span>
<strong class="character-info-record-status character-info-record-status--alert">Not insured</strong>
</div>
</section>
</div>
<div class="character-info-return">
[[Confirm->Look up]]
</div>
</div>
<</nobr>><p>Once the panel confirms your identity, it releases your card and grants access to the local housing listings. You sort them by distance and price. Even in the Slums, nearly everything costs more than you can afford.</p>\
<p>The cheapest listing is around the corner: one room for c150 a week. You only have c100. With no better option, you decide to go [[there->Renting Place]] and ask the landlord to lower the price.</p>\<p>The residential block looks like everything else in the Slums: neglected, damp, and patched together just well enough to remain standing. After a day of travel, you are too tired to be particular.</p>\
<p>You find the number from the listing and knock. A few seconds later, a broad, middle-aged man in worn slacks and a stained white shirt opens the door.</p>\
<<say "Man" "media/characters/arthur.jpg" "arthur">>Yeah? What do you want?<</say>>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Hello. I saw your housing listing on the public panel. You still have a room available, right?<</say>>\
<<say "Man" "media/characters/arthur.jpg" "arthur">>Still available. You looking to rent it?<</say>>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Yes, please. Could you show me where it is?<</say>>\
<p>You step back into the corridor, expecting him to lead you elsewhere. He watches you with a puzzled frown.</p>\
<<say "Man" "media/characters/arthur.jpg" "arthur">>Where are you going? This is the place.<</say>>\
<p>You glance past him into the cramped residence.</p>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You mean... in here? With you?<</say>>\
<<say "Man" "media/characters/arthur.jpg" "arthur">>You thought c150 bought a private apartment? You get one bedroom. Kitchen and bathroom are shared.<</say>>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Of course. A filthy room in a stranger's home. Still... it is better than sleeping outside.<</say>>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>All right. Could I see the room first?<</say>>\
<p>He lets you inside. The spare room is in complete disarray, as if its last occupant left during a storm. The kitchen and bathroom are both shared; the only other bedroom belongs to him.</p>\
<<say "Man" "media/characters/arthur.jpg" "arthur">>So, you want it or not?<</say>>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I do want it, but there is a problem. I only have c100 right now.<</say>>\
<<say "Man" "media/characters/arthur.jpg" "arthur">>Then why the hell are you wasting my time?<</say>>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Please. I have nowhere else to go tonight. There must be something I can do.<</say>>\
<<say "Man" "media/characters/arthur.jpg" "arthur">>This isn't a charity, girl.<</say>>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I know. I can work. Clean, cook—whatever you need. Please.<</say>>\
<p>His irritation fades into calculation as he looks past you at the state of the residence.</p>\
<<say "Man" "media/characters/arthur.jpg" "arthur">>All right. Clean the whole place once a week and I'll knock c50 off that week's rent. Miss it, and you owe the full c150. Deal?<</say>>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Deal. Thank you. I mean it.<</say>>\
<<say "Man" "media/characters/arthur.jpg" "arthur">>Transfer the c100 now and move your things in. Name's Arthur, by the way. Don't make me regret this.<</say>>\
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You won't. I'm $mcname. It is nice to meet you, Arthur.<</say>>\
<<run setup.chargeCredits(100)>><<set $mchomeaddress to "Arda > Suns End > Ughathan 84031/40">><<set $cleaningcooldown to false>><<set $baseRent to 150>><<run setup.setRentDue($baseRent)>>\
<p>You transfer every credit you have. Arthur leaves you to settle in, and you take stock of the mess around you. It is hardly the fresh start you imagined, but once you [[tidy->Slums Home]] the place, it might begin to feel like home.</p>\<<nobr>>
<<set _address to setup.parseCharacterAddress($mchomeaddress)>>
<div class="character-info">
<header class="character-info-header">
<h2>Character Profile</h2>
<div class="character-info-registry-mark">
<p>Citizen record</p>
<img src="media/ui/character-info/protectorate-emblem.svg" alt="Protectorate emblem">
</div>
</header>
<div class="character-info-layout">
<aside class="character-info-summary">
<img class="character-info-portrait" @src="setup.getMcPortrait()" data-mc-portrait alt="">
<strong class="character-info-name">$mcname Savino</strong>
</aside>
<section class="character-info-section">
<h3><img class="character-info-category-icon" src="media/ui/character-info/personal.svg" alt="">Personal Details</h3>
<dl class="character-info-fields">
<div><dt>Full name</dt><dd>$mcname Savino</dd></div>
<div><dt>Age</dt><dd>$mcage</dd></div>
<div><dt>Gender</dt><dd>Female</dd></div>
<div><dt>Race</dt><dd>Human</dd></div>
<div><dt>Eye color</dt><dd>$mceyecolor</dd></div>
<div><dt>Marital status</dt><dd>$mcmartialstatus</dd></div>
<div><dt>Occupation</dt><dd><<print setup.getOccupationDisplay()>></dd></div>
</dl>
</section>
<section class="character-info-section">
<h3><img class="character-info-category-icon" src="media/ui/character-info/registration.svg" alt="">Registration</h3>
<div class="character-info-address-block">
<h4>Permanent address</h4>
<dl class="character-info-fields">
<div><dt>Planet</dt><dd><<print _address.planet>></dd></div>
<div><dt>City</dt><dd><<print _address.city>></dd></div>
<div><dt>Street</dt><dd><<print _address.street>></dd></div>
<div><dt>Building</dt><dd><<print _address.building>></dd></div>
<div><dt>Residence</dt><dd><<print _address.residence>></dd></div>
</dl>
</div>
<div class="character-info-address-block character-info-address-block--birthplace">
<h4>Birthplace</h4>
<dl class="character-info-fields">
<div><dt>Planet</dt><dd>Hedexus V</dd></div>
<div><dt>City</dt><dd>Trexuria</dd></div>
</dl>
</div>
</section>
<section class="character-info-section character-info-finances">
<div class="character-info-account-block">
<h3><img class="character-info-category-icon" src="media/ui/character-info/account.svg" alt="">Account</h3>
<div class="character-info-credit"><span>Available credits</span><strong>c$credits</strong></div>
<div class="character-info-credit"><span>Fines</span><strong @class="setup.getFinancialValueClass('fines', $fines)">c$fines</strong></div>
<div class="character-info-credit"><span>Outstanding balance</span><strong @class="setup.getFinancialValueClass('outstanding', $outstandingBalance)">c$outstandingBalance</strong></div>
</div>
<div class="character-info-records">
<h3><img class="character-info-category-icon" src="media/ui/character-info/records.svg" alt="">Records</h3>
<div class="character-info-record-row">
<span>Peacekeeper record</span>
<<if $isWanted>>
<strong class="character-info-record-status character-info-record-status--alert">Wanted</strong>
<<else>>
<strong class="character-info-record-status character-info-record-status--clear">Not wanted</strong>
<</if>>
</div>
<div class="character-info-record-row">
<span>Health insurance</span>
<<if $hasHealthInsurance>>
<strong class="character-info-record-status character-info-record-status--clear"><<print setup.getHealthInsuranceStatus()>></strong>
<<else>>
<strong class="character-info-record-status character-info-record-status--alert">Not insured</strong>
<</if>>
</div>
</div>
</section>
</div>
<div class="character-info-return">
<<link "Return">><<goto $return>><</link>>
</div>
</div>
<</nobr>><<nobr>>
<<set _dominanceValue to Math.max(-100, Math.min(100, Number($dominance) || 0))>>
<<set _corruptionValue to Math.max(-100, Math.min(100, Number($corruption) || 0))>>
<div class="character-stats">
<h2>Character Stats</h2>
<section class="character-stats-trait character-trait-panel">
<div class="character-stats-trait-header">
<h3>Disposition</h3>
<strong><<print _dominanceValue>></strong>
</div>
<div class="character-trait-labels">
<span>Submissive</span>
<span>Dominant</span>
</div>
<div class="character-stats-scale">
<span>−100</span>
<div class="character-trait-bar" role="progressbar" aria-label="Disposition" aria-valuemin="-100" aria-valuemax="100" @aria-valuenow="_dominanceValue">
<span class="character-trait-half character-trait-half--submissive">
<span class="character-trait-fill character-trait-fill--submissive" @style="'width: ' + Math.max(0, -_dominanceValue) + '%'"></span>
</span>
<span class="character-trait-half character-trait-half--dominant">
<span class="character-trait-fill character-trait-fill--dominant" @style="'width: ' + Math.max(0, _dominanceValue) + '%'"></span>
</span>
<span class="character-trait-centre"></span>
</div>
<span>100</span>
</div>
</section>
<section class="character-stats-trait character-trait-panel character-trait-panel--corruption">
<div class="character-stats-trait-header">
<h3>Corruption</h3>
<strong><<print _corruptionValue>></strong>
</div>
<div class="character-trait-labels">
<span>Pure</span>
<span>Wicked</span>
</div>
<div class="character-stats-scale">
<span>−100</span>
<div class="character-trait-bar" role="progressbar" aria-label="Corruption" aria-valuemin="-100" aria-valuemax="100" @aria-valuenow="_corruptionValue">
<span class="character-trait-half character-trait-half--submissive">
<span class="character-trait-fill character-trait-fill--pure" @style="'width: ' + Math.max(0, -_corruptionValue) + '%'"></span>
</span>
<span class="character-trait-half character-trait-half--dominant">
<span class="character-trait-fill character-trait-fill--wicked" @style="'width: ' + Math.max(0, _corruptionValue) + '%'"></span>
</span>
<span class="character-trait-centre"></span>
</div>
<span>100</span>
</div>
</section>
<<for _stat range setup.characterStatDefinitions>>
<<set _statValue to setup.normalizeCharacterStat(State.variables[_stat.key], _stat.start)>>
<section @class="'character-stats-trait character-physical-stat character-physical-stat--' + _stat.key">
<div class="character-stats-trait-header">
<h3><<print _stat.label>></h3>
<strong><<print _statValue>></strong>
</div>
<div class="character-trait-labels character-physical-stat-labels">
<span><<print _stat.minimumLabel>></span>
<span><<print _stat.maximumLabel>></span>
</div>
<div class="character-stats-scale">
<span>0</span>
<div class="character-physical-stat-bar" role="progressbar" @aria-label="_stat.label" aria-valuemin="0" aria-valuemax="100" @aria-valuenow="_statValue">
<span class="character-physical-stat-fill" @style="'width: ' + setup.getCharacterStatProgress(_statValue, _stat.start) + '%'"></span>
</div>
<span>100</span>
</div>
</section>
<</for>>
<<set _activeRelationship to setup.getActiveRomanceRelationship()>>
<<if _activeRelationship>>
<section @class="'character-stats-trait character-relationship-stat character-relationship-stat--' + _activeRelationship.id">
<div class="character-stats-trait-header">
<h3>Relationship — <<print _activeRelationship.name>></h3>
<strong><<print _activeRelationship.value>></strong>
</div>
<div class="character-trait-labels character-physical-stat-labels">
<span>New acquaintance</span>
<span>Trusted partner</span>
</div>
<div class="character-stats-scale">
<span>0</span>
<div class="character-physical-stat-bar" role="progressbar" @aria-label="'Relationship with ' + _activeRelationship.name" aria-valuemin="0" aria-valuemax="100" @aria-valuenow="_activeRelationship.value">
<span class="character-physical-stat-fill" @style="'width: ' + _activeRelationship.value + '%'"></span>
</div>
<span>100</span>
</div>
</section>
<</if>>
<div class="character-info-return">
<<link "Return">><<goto $return>><</link>>
</div>
</div>
<</nobr>><<nobr>>
<div class="game-tutorial">
<header class="game-tutorial__header">
<div>
<span class="game-tutorial__eyebrow">PLAYER REFERENCE</span>
<h2>How the Game Works</h2>
</div>
<p>This guide explains the main mechanics without revealing story events, character routes, or hidden outcomes.</p>
</header>
<div class="tutorial-grid">
<section class="tutorial-card tutorial-card--wide">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">◷</span><h3>Time and Calendar</h3></div>
<div class="tutorial-phase-track" aria-label="Day phases">
<<for _phase range setup.gameDayPhases>>
<span @class="'tutorial-phase' + (_phase.id === setup.getDayPhase() ? ' tutorial-phase--current' : '')"><<print _phase.label>></span>
<</for>>
</div>
<p>Actions consume phases but cannot carry you beyond Night. If too little time remains, the action is greyed out. Sleep is available only at Night and begins the next day at Morning.</p>
<div class="tutorial-cost-grid">
<span><strong>Nap</strong><small>1 phase</small></span>
<span><strong>Clean up</strong><small>2 phases</small></span>
<span><strong>Do dishes</strong><small>1 phase</small></span>
<span><strong>Work</strong><small>3 phases</small></span>
<span><strong>Work out</strong><small>1 phase</small></span>
<span><strong>Watch TV</strong><small>1 phase</small></span>
<span><strong>Side quest</strong><small>1 phase</small></span>
<span><strong>Contract</strong><small>1 phase</small></span>
<span><strong>Main quest stage</strong><small>3 phases</small></span>
</div>
<p class="tutorial-note">The calendar follows normal weekdays and months. Weekly calculations occur when Sunday passes into Monday.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">↔</span><h3>Disposition</h3></div>
<div class="tutorial-axis tutorial-axis--disposition"><span>−100<br><small>Submissive</small></span><i></i><span>+100<br><small>Dominant</small></span></div>
<p>Disposition records how assertively the main character tends to respond. Neither direction is a failure state; each can open different choices and approaches.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">◆</span><h3>Corruption</h3></div>
<div class="tutorial-axis tutorial-axis--corruption"><span>−100<br><small>Pure</small></span><i></i><span>+100<br><small>Wicked</small></span></div>
<p>Corruption reflects willingness to cross personal boundaries. It can unlock or restrict choices and determines whether some clothing is available to buy.</p>
</section>
<section class="tutorial-card tutorial-card--wide">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">▲</span><h3>Physical Stats</h3></div>
<div class="tutorial-stat-grid">
<div><strong>Strength</strong><span>Damage dealt</span><small>Every 10 points: +1%</small></div>
<div><strong>Constitution</strong><span>Incoming damage reduction</span><small>Every 10 points: +1%</small></div>
<div><strong>Agility</strong><span>Chance to dodge</span><small>Every 10 points: +1%</small></div>
</div>
<p>These stats range from 0 to 100 and improve through appropriate activities. Open Character Stats for exact current values.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">c</span><h3>Credits and Weekly Bills</h3></div>
<div class="tutorial-flow"><span>Income</span><b>›</b><span>Fines</span><b>›</b><span>Rent</span><b>›</b><span>Balance</span></div>
<p>Monday begins by adding eligible income, then paying fines, rent, and the outstanding balance in that order. Rent is paid only when the full amount is available.</p>
<p class="tutorial-note">Unpaid fines and negative outstanding balances grow by 5%, rounded up. A positive outstanding balance pays credits to you.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">▣</span><h3>Work</h3></div>
<p>Only one ordinary shift can be completed per day, and a shift uses three phases. Weekly jobs reward consistent attendance, while some roles use task-based payment instead.</p>
<p class="tutorial-note">Job opportunities may depend on your work record and stats. Seven full workdays earn a bonus in weekly-paid roles.</p>
</section>
<section class="tutorial-card tutorial-card--wide">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">!</span><h3>Quests</h3></div>
<p><strong>Side quests</strong> come from Patrons looking for extra help at the "Vested Interest" Bar. Six randomly selected offers are available each week, and the main character may accept up to three at once. Every side quest takes one phase to complete.</p>
<div class="tutorial-stat-grid">
<div><strong>Errand</strong><span>Deliver something in the Slums</span><small>Reward: c25</small></div>
<div><strong>Brawl</strong><span>Fight an assigned target</span><small>Reward: c75</small></div>
<div><strong>Find Information</strong><span>Gather useful local intelligence</span><small>Reward: c50</small></div>
</div>
<p class="tutorial-note">Offers refresh during the Sunday-to-Monday weekly update. Brawls use the combat system and can attract unwanted attention.</p>
<p><strong>Main quests</strong> are larger story assignments tracked separately from Patron work. After the main character advances beyond her starting career and works for a number of days, someone may find her with an important opportunity. Main-quest stages can take more time than side quests; their tracker shows the current objective and progress.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">◇</span><h3>Clothing and Wardrobe</h3></div>
<p>Purchased clothing appears in the Wardrobe and can be equipped by category. Some articles require enough Corruption before they can be bought.</p>
<ul><li>An outfit and shoes are required before leaving home.</li><li>Working out requires owned Athletic shoes and an Athletic outfit.</li></ul>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">⚔</span><h3>Combat</h3></div>
<p>Initiative rolls decide who acts first. Attacking, defending, resting, reloading, using an item, using an active body mod, or trying to escape ends the acting character's turn.</p>
<div class="tutorial-combat-bars"><span><i style="width: 82%"></i><b>Health</b></span><span><i style="width: 58%"></i><b>Stamina</b></span></div>
<ul><li><strong>Defend:</strong> costs 25 Stamina and reduces incoming melee damage by 50%.</li><li><strong>Rest:</strong> restores 50% Stamina.</li><li><strong>Ranged weapons:</strong> consume magazine ammunition and must be reloaded.</li><li><strong>Try to Escape:</strong> can fail and may have serious consequences.</li></ul>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">⬡</span><h3>Gear, Items, and Body Mods</h3></div>
<p>Weapons set damage and attack type; armor reduces incoming damage. Consumable combat items occupy limited loadout slots and expend one owned use when activated.</p>
<p>Functional body mods occupy specific body slots. Passive mods work automatically, while active mods appear under Use Body Mod in combat. Cosmetic changes affect appearance and may require recovery time before another treatment.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">♥</span><h3>Relationships</h3></div>
<p>Spending time with certain recurring characters can build a relationship from 0 to 100. Important moments must be resolved before some relationship caps can advance.</p>
<p class="tutorial-note">Your decisions matter: opportunities may be postponed, unlocked, permanently closed, or changed without advance warning.</p>
</section>
<section class="tutorial-card">
<div class="tutorial-card__heading"><span class="tutorial-card__icon">≈</span><h3>Drunkenness</h3></div>
<div class="tutorial-meter"><i></i></div>
<p>Drinks add 25% Drunkenness. Moving between passages gradually lowers it, and sleeping clears it completely. High Drunkenness can alter events and available decisions.</p>
</section>
</div>
<div class="character-info-return">
<<link "Return">><<goto $return>><</link>>
</div>
</div>
<</nobr>><<nobr>>
<<set _partnerId to $partnerRelocation.partner>>
<<set _partnerName to setup.getPartnerDisplayName(_partnerId)>>
<<set _partnerImage to setup.getPartnerPortrait(_partnerId)>>
<<set _inviteLabel to "Invite " + _partnerName + " to live with you in Middle-City">>
<h2>A difficult distance</h2>
<p>You enter the apartment and find <<print _partnerName>> waiting for you. The relief on <<if _partnerId is "bradford">>his<<else>>her<</if>> face quickly gives way to concern.</p>
<<say _partnerName _partnerImage _partnerId>>Where have you been all this time? I was starting to wonder whether you had forgotten this place entirely.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I have a difficult job underway. Irine and I set up a base of operations in Middle-City—an old Warehouse we're rebuilding.<</say>>
<<if _partnerId is "bradford">>
<<say "Bradford" _partnerImage "bradford">>Middle-City is a long way from here. I trust you, but distance can wear at something even when neither person means to let it.<</say>>
<<else>>
<<say "Melisa" _partnerImage "melisa">>Middle-City? Love, that's not exactly around the corner. I know you have work to do, but I don't want us slowly becoming strangers because we never see each other.<</say>>
<</if>>
<p>You take <<if _partnerId is "bradford">>his<<else>>her<</if>> hand. The Warehouse is finally clean and its essential rooms are finished; it has enough space for more than a temporary base now.</p>
<div id="partner-warehouse-decision">
<<link _inviteLabel>>
<<set _moveResult to setup.invitePartnerToWarehouse(_partnerId)>>
<<replace "#partner-warehouse-decision">>
<<if _moveResult.accepted>>
<<if _partnerId is "bradford">>
<<say "Bradford" _partnerImage "bradford">>Then yes. I need to close a few things here, but next Monday I'll join you at the new address. After that, we face whatever comes together.<</say>>
<<else>>
<<say "Melisa" _partnerImage "melisa">>You want me there with you? Then try stopping me. I need this week to close things here, but next Monday I'll be at your new address, love.<</say>>
<</if>>
<p>Your permanent address is transferred to the Warehouse. From now on, the c200 weekly housing charge is recorded as tax due.</p>
[[Return to the Slums->Slums]]
<<else>>
<<if _partnerId is "bradford">>
<<say "Bradford" _partnerImage "bradford">>That's a serious step. Give me a week to think about it properly. I don't want to promise something before I'm ready.<</say>>
<<else>>
<<say "Melisa" _partnerImage "melisa">>I want us, but moving districts is a big step. Give me a week to think, all right?<</say>>
<</if>>
<p>You agree to raise the question again after seven days.</p>
<<link "Continue">><<set _continueDestination to setup.getPartnerHomeRoomPassage("living", _partnerId)>><<goto _continueDestination>><</link>>
<</if>>
<</replace>>
<</link>><br>
<<link "Assure them the distance will not affect your relationship">>
<<run setup.postponePartnerWarehouseMove(_partnerId, 5)>><<run UIBar.update()>>
<<replace "#partner-warehouse-decision">>
<<say $mcname setup.getMcPortrait() "jane">>This won't change what we have. I can keep travelling back, and we'll make it work.<</say>>
<<if _partnerId is "bradford">>
<<say "Bradford" _partnerImage "bradford">>All right. We'll try it your way. Just don't leave every visit until tomorrow.<</say>>
<<else>>
<<say "Melisa" _partnerImage "melisa">>Fine. We'll try—but you had better make time for us, love.<</say>>
<</if>>
<p class="gym-stat-gain stat-change-confirmation stat-change-confirmation--relationship stat-change-confirmation--decrease"><strong>Relationship with <<print _partnerName>> −5</strong></p>
<p>The question of moving together can be raised again in seven days.</p>
<<link "Continue">><<set _continueDestination to setup.getPartnerHomeRoomPassage("living", _partnerId)>><<goto _continueDestination>><</link>>
<</replace>>
<</link>>
</div>
<</nobr>><<nobr>>
<<set _partnerId to setup.getWarehousePartner()>>
<<set _partnerName to setup.getPartnerDisplayName(_partnerId)>>
<<set _partnerImage to setup.getPartnerPortrait(_partnerId)>>
<<run setup.completePartnerWarehouseArrival()>>
<h2>Home in Middle-City</h2>
<img class="scene-image" @src="setup.getWarehouseMainHallImage()" alt="The renovated Warehouse in Middle-City">
<p>Monday brings a familiar figure through the Warehouse doors, carrying the last of <<if _partnerId is "bradford">>his<<else>>her<</if>> belongings.</p>
<<if _partnerId is "bradford">>
<<say "Bradford" _partnerImage "bradford">>I said I'd be here. Show me where our room is, and then show me what needs doing.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Our room. I like the sound of that.<</say>>
<<else>>
<<say "Melisa" _partnerImage "melisa">>Made it, love. Now show me our room—and don't even think about carrying all this yourself.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Welcome home, Melisa.<</say>>
<</if>>
<p>Before unpacking, you find Irine and bring her into the main hall to make the introductions.</p>
<<say $mcname setup.getMcPortrait() "jane">>Irine, this is <<print _partnerName>>, my partner. <<print _partnerName>>, this is Irine—the collector's agent I told you about, and the reason this Warehouse became our base.<</say>>
<<if _partnerId is "bradford">>
<p>Irine's expression brightens as she looks Bradford over, her usually businesslike welcome carrying considerably more warmth than necessary.</p>
<<say "Irine" "media/characters/irine.jpg" "irine">>Bradford. It is genuinely a pleasure to meet you. Any man who can keep up with her should make this place much more interesting.<</say>>
<<say "Bradford" _partnerImage "bradford">>Good to meet you too. I'll help where I can, but she has never needed anyone to keep up with her.<</say>>
<<else>>
<p>Irine offers Melisa a cordial nod, welcoming her with the same composed professionalism she brings to a promising new associate.</p>
<<say "Irine" "media/characters/irine.jpg" "irine">>Welcome to the Warehouse, Melisa. Anyone important to her is welcome here. I trust we will work well together.<</say>>
<<say "Melisa" _partnerImage "melisa">>We will—as long as the work keeps my love in one piece.<</say>>
<</if>>
<p>You settle <<print _partnerName>> into your room. The Warehouse no longer feels like a temporary base; it feels like the home you are building together.</p>
[[Continue->Warehouse]]
<</nobr>><<nobr>>
<<set _partnerId to setup.getWarehousePartner()>>
<<set _partnerName to setup.getPartnerDisplayName(_partnerId)>>
<h2>Bed</h2>
<img class="scene-image" @src="setup.getWarehouseMcRoomImage()" @alt="'The room shared by ' + $mcname + ' and ' + _partnerName">
<<say $mcname setup.getMcPortrait() "thought">>Coming back to this room feels better now that <<print _partnerName>> is here.<</say>>
<<if _partnerId is "melisa">>
<<link "Have sex with Melisa">><<run setup.startMelisaBedroomSex()>><<goto "Melisa Bedroom Sex">><</link>><br>
<<elseif _partnerId is "bradford">>
<<link "Have sex with Bradford">><<set _bradfordSexStart to setup.startBradfordRepeatSex("Bradford Bedroom Aftercare")>><<goto _bradfordSexStart.destination>><</link>><br>
<</if>>
<<if setup.canSleepNow()>>
[[Sleep->Warehouse Partner Sleep]]
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getSleepLockMessage()">Sleep</span>
<</if>><br>
[[Return->Warehouse My Room]]
<</nobr>><<run setup.soberUp()>><<run setup.advanceGameDay()>><<run UIBar.update()>>
<<nobr>>
<<set _partnerId to setup.getWarehousePartner()>>
<<set _partnerName to setup.getPartnerDisplayName(_partnerId)>>
<h2>Sleep</h2>
<p>You settle beside <<print _partnerName>> and sleep safely through the night in your shared Warehouse room.</p>
<<if _partnerId is "bradford">>
<<switch random(1, 3)>>
<<case 1>><img class="scene-image" src="media/locations/bradfordapartment/sleep1.jpg" alt="Sleeping naked beside Bradford">
<<case 2>><img class="scene-image" src="media/locations/bradfordapartment/sleep2.jpg" alt="Sleeping naked beside Bradford">
<<case 3>><img class="scene-image" src="media/locations/bradfordapartment/sleep3.jpg" alt="Sleeping naked beside Bradford">
<</switch>>
<<link "Wake up">><<goto setup.getBradfordMorningDestination()>><</link>>
<<else>>
<<switch random(1, 2)>>
<<case 1>><img class="scene-image" src="media/locations/melisasapartment/bedroom/sleep1.avif" alt="Sleeping beside Melisa">
<<case 2>><img class="scene-image" src="media/locations/melisasapartment/bedroom/sleep2.jpg" alt="Sleeping beside Melisa">
<</switch>>
[[Wake up->Warehouse My Room]]
<</if>>
<</nobr>><<nobr>>
<h2>Extra Work</h2>
<p>You ask around until one of the bar's Patrons motions you toward a shadowed corner.</p>
<<say "Patron" "" "unaffiliated">><<print setup.getSideQuestPatronLine()>><</say>>
<div id="side-quest-board" class="side-quest-board"><<extraWorkBoard>></div>
<<link "Return">><<goto setup.getBarReturnPassage()>><</link>>
<</nobr>><<widget "extraWorkBoard">>
<div class="side-quest-board__summary">Weekly offers: <strong>6</strong> · Accepted: <strong><<print setup.getAcceptedSideQuests().length>>/3</strong></div>
<div class="side-quest-grid">
<<for _quest range setup.getSideQuestOffers()>>
<<capture _quest>>
<article @class="'side-quest-card side-quest-card--' + _quest.category">
<div class="side-quest-card__header"><span><<print setup.sideQuestCategoryLabels[_quest.category]>></span><small><<print _quest.location>></small></div>
<h3><<print _quest.title>></h3><p><<print _quest.description>></p>
<div class="side-quest-card__action">
<<if _quest.status is "accepted">><button disabled>Accepted</button>
<<elseif _quest.status is "completed">><button disabled>Completed</button>
<<elseif setup.getAcceptedSideQuests().length >= 3>><span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="You can only accept three quests at a time.">Accept</span>
<<else>><<button "Accept">><<run setup.acceptSideQuest(_quest.id)>><<replace "#side-quest-board">><<extraWorkBoard>><</replace>><</button>><</if>>
</div>
</article>
<</capture>>
<</for>>
</div>
<</widget>><<nobr>>
<h2>Quests</h2>
<<if setup.isIrineMainQuestActive()>>
<section class="main-quest-card">
<div class="main-quest-card__header"><span>Main Quest</span><small>Irine · Collector's Agent</small></div>
<h3><<print setup.getIrineArtifactQuestTitle()>></h3>
<<if setup.isMovingUpQuestActive()>>
<<if setup.hasPaidWarehouseShare()>>
<p>Your share is paid. Meet Irine at the "Vested Interest" Bar when you have enough credits for the trip and a return ticket.</p>
<div class="main-quest-card__details"><span>Travel funds</span><strong>c<<print $credits>> / c100</strong></div>
<div class="main-quest-card__status"><<if setup.canLeaveForWarehouseWithIrine()>>Ready to travel<<else>>Preparing for departure<</if>></div>
<<else>>
<p>Raise your c15000 share of the warehouse purchase, then meet Irine at the "Vested Interest" Bar.</p>
<div class="main-quest-card__details"><span>Required funds</span><strong>c<<print $credits>> / c<<print setup.getMovingUpRequiredCredits()>></strong></div>
<div class="main-quest-card__status"><<if setup.canAffordMovingUpShare()>>Ready to meet Irine<<else>>Raising funds<</if>></div>
<</if>>
<<elseif setup.hasRecoveredIrineArtifact()>>
<p>You recovered the artifact. Meet Irine at the "Vested Interest" Bar.</p>
<div class="main-quest-card__details"><span>Reward</span><strong>c<<print setup.getIrineArtifactQuestReward()>> upon delivery</strong></div>
<div class="main-quest-card__status">Artifact recovered</div>
<<else>>
<p>Search the Slums for the artifact requested by Irine and return it intact.</p>
<div class="main-quest-card__details"><span>Reward</span><strong>c<<print setup.getIrineArtifactQuestReward()>> upon delivery</strong></div>
<div class="main-quest-card__status">Stage <<print setup.getMainQuestArtifactStage().number>> · <<print setup.getMainQuestArtifactStage().name>></div>
<</if>>
</section>
<</if>>
<<set _acceptedQuests to setup.getAcceptedSideQuests()>>
<<if _acceptedQuests.length>>
<p>You can keep track of up to three accepted quests. Each one takes one part of the day to complete.</p>
<div class="side-quest-grid side-quest-grid--log">
<<for _quest range _acceptedQuests>>
<<capture _quest>>
<article @class="'side-quest-card side-quest-card--' + _quest.category">
<div class="side-quest-card__header"><span><<print setup.sideQuestCategoryLabels[_quest.category]>></span><small><<print _quest.location>></small></div>
<h3><<print _quest.title>></h3><p><<print _quest.description>></p>
<<if setup.canPerformDayPhaseAction("sideQuest")>>
<<link "Do quest">><<set _questStart to setup.startSideQuest(_quest.id)>><<if _questStart.ok>><<goto _questStart.destination>><</if>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="It is too late to do that today.">Do quest</span>
<</if>>
</article>
<</capture>>
<</for>>
</div>
<<else>>
<p>You have no accepted quests. Patrons at the "Vested Interest" Bar may have extra work.</p>
<</if>>
<<link "Return">><<goto $return>><</link>>
<</nobr>><<nobr>>
<<set _quest to setup.getExecutingSideQuest()>>
<h2>Errand</h2>
<<if _quest && _quest.category is "errand">>
<p>You make your way to <<print _quest.location>> and complete the delivery.</p>
<p><<print _quest.result>></p>
<<set _questCompletion to setup.completeExecutingSideQuest()>>
<<if _questCompletion.ok>><p><strong>You receive c<<print _questCompletion.payment>>.</strong></p><</if>>
[[Return->Slums]]
<<else>><p class="table-order-error">There is no active errand.</p>[[Return->Slums]]<</if>>
<</nobr>><<nobr>>
<<set _quest to setup.getExecutingSideQuest()>>
<h2>Find Information</h2>
<<if _quest && _quest.category is "information">>
<p>You spend time around <<print _quest.location>>, listening carefully and asking cautious questions.</p>
<p><<print _quest.result>></p>
<<set _questCompletion to setup.completeExecutingSideQuest()>>
<<if _questCompletion.ok>><p><strong>You receive c<<print _questCompletion.payment>>.</strong></p><</if>>
[[Return->Slums]]
<<else>><p class="table-order-error">There is no active information quest.</p>[[Return->Slums]]<</if>>
<</nobr>><<nobr>>
<<set _quest to setup.getExecutingSideQuest()>>
<h2>Brawl</h2>
<<if _quest && _quest.category is "brawl">>
<<if _quest.targetImage>><img class="scene-image" @src="_quest.targetImage" @alt="_quest.targetName"><</if>>
<p>You track <<print _quest.targetName>> through the Slums and corner them away from the busiest streets.</p>
<<say _quest.targetName _quest.targetImage "unaffiliated">>Whatever somebody paid you, this is going to hurt you more than me.<</say>>
<<link "Fight">><<run setup.startCombatEncounter(_quest.targetName, { context: "side-quest-brawl", contractId: _quest.id, enemyImage: _quest.targetImage })>><<goto "Fight">><</link>>
<<else>><p class="table-order-error">There is no active brawl.</p>[[Return->Slums]]<</if>>
<</nobr>><<set $districtTheme to "slums">><<run setup.applyDistrictTheme()>>
<<set $districtEncounterReturnPassage to "Slums">>
<<set _slumsEncounter to setup.rollSlumsDistrictEncounter("Slums")>>
<<if _slumsEncounter>>
<<set $pendingCombatEncounter to _slumsEncounter.enemyName>>
<<set $pendingCombatEncounterFaction to _slumsEncounter.faction>>
<<goto _slumsEncounter.passage>>
<</if>>
<p>Life spills through the lower levels of Suns End beneath a permanent haze of rust, exhaust, and flickering advertisements. The Slums are dangerous, but for now they are home.</p>
<img class="scene-image" src="media/locations/slums/slums.jpg" alt="The Slums district">
<<nobr>>
[[Market Square]]<br>
[["Vested Interest" Bar]]<br>
[[Hospital]]<br>
[[Gym]]<br>
<<if setup.canSearchForIrineArtifact()>>[[Look for the artifact...->Look for the Artifact]]<br><</if>>
[[Data Panel->Protectorate Data Panel]]<br>
<<if setup.hasWarehouseAccess()>>[[Maglev Train Station->Slums Maglev Station]]<br><</if>>
<<if setup.hasPartnerRelocationRemovedSlumsHome()>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="Your permanent home is now in Middle-City.">Home</span>
<<else>>
<<link "Home">><<goto setup.getPlayerHomePassage()>><</link>>
<</if>>
<</nobr>><<nobr>>
<h2>Protectorate Data Panel</h2>
<div class="protectorate-data-panel">
<div class="protectorate-data-panel__masthead">
<strong>PROTECTORATE CIVIL INFORMATION NETWORK</strong>
<span>PUBLIC ACCESS TERMINAL</span>
</div>
<p class="protectorate-data-panel__welcome">Knowledge strengthens duty. Duty preserves the Empire.</p>
<div id="protectorate-data-lookup">
<<link "Look up info...">>
<<replace "#protectorate-data-lookup">>
<p class="protectorate-data-panel__instruction">Select an approved subject or enter a public-record query.</p>
<div class="protectorate-data-panel__categories">
<<for _loreCategory range setup.protectorateLoreCategories>>
<<set _loreCategoryId to _loreCategory.id>>
<<set _loreCategoryLabel to _loreCategory.label>>
<<capture _loreCategoryId _loreCategoryLabel>>
<<button _loreCategoryLabel>>
<<set _loreResult to setup.getRandomProtectorateLore(_loreCategoryId)>>
<<replace "#protectorate-data-result">>
<h3><<print _loreResult.label>></h3>
<p><<print _loreResult.text>></p>
<</replace>>
<</button>>
<</capture>>
<</for>>
</div>
<div class="protectorate-data-panel__search">
<label>Archive search</label>
<div class="protectorate-data-panel__search-row">
<<textbox "$protectorateDataQuery" "">>
<<button "Search">>
<<set _dataSearchResult to setup.searchProtectorateDataPanel($protectorateDataQuery)>>
<<replace "#protectorate-data-result">>
<div @class="_dataSearchResult.restricted ? 'protectorate-data-result protectorate-data-result--restricted' : 'protectorate-data-result protectorate-data-result--error'">
<h3><<print _dataSearchResult.title>></h3>
<p><<print _dataSearchResult.text>></p>
<<if _dataSearchResult.restricted>>
<p class="protectorate-data-panel__trace"><strong>UNAUTHORISED ACCESS RECORDED. CITIZEN ID FORWARDED TO PROTECTORATE AUTHORITIES.</strong></p>
<p class="wanted-status-alert"><strong>You are now WANTED!</strong></p>
<</if>>
</div>
<</replace>>
<</button>>
</div>
</div>
<div id="protectorate-data-result" class="protectorate-data-result">
<p>Awaiting selection.</p>
</div>
<</replace>>
<</link>>
</div>
</div>
[[Outside->Slums]]
<</nobr>><h2>Gym</h2>
<img class="scene-image" src="media/locations/gym/gym.jpeg" alt="Slums gym">
<<nobr>>
<<set _gymLockMessage to setup.getGymWorkoutLockMessage()>>
<<if _gymLockMessage>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="_gymLockMessage">Work out</span>
<<else>>
<<link "Work out">>
<<set _gymPreparation to setup.prepareGymWorkout({ returnPassage: "Gym", allowRelationshipTraining: setup.canTrainWithPartnerAtGym("slums") })>>
<<if _gymPreparation.ok>><<goto "Gym Training">><</if>>
<</link>>
<</if>><br>
<<if setup.ensureMelisaState().met && !setup.canTrainBoxingWithMelisa() && !$melisa.leftGym>>
[[Talk to Melisa about boxing->Melisa Boxing Offer]]<br>
<</if>>
<<if $melisa.datePending && !$melisa.firstDateCompleted>>
<<link "Go on your date with Melisa">><<set $melisa.datePending to false>><<goto "Melisa First Date">><</link>><br>
<</if>>
<<if $melisa.secondDatePending && !$melisa.secondDateCompleted>>
<<link "Go on your second date with Melisa">><<set $melisa.secondDatePending to false>><<goto "Melisa Second Date">><</link>><br>
<</if>>
<<link "Shower">><<set _gymShower to setup.prepareGymShower()>><<goto _gymShower.destination>><</link>><br>
[[Outside->Slums]]
<</nobr>><h2>Work out</h2>
<<gymMedia $gymSession.preparedMedia>>
<p>You change into suitable athletic clothes and prepare for the session. What do you want to train?</p>
<<nobr>>
<div class="gym-category-grid">
<<for _gymCategory range setup.gymTrainingCategories>>
<<set _gymTrainingCategoryId to _gymCategory.id>>
<<set _gymTrainingCategoryLabel to _gymCategory.label>>
<<capture _gymTrainingCategoryId _gymTrainingCategoryLabel>>
<<button _gymTrainingCategoryLabel>>
<<replace "#gym-exercise-selection">><<gymExerciseMenu _gymTrainingCategoryId>><</replace>>
<</button>>
<</capture>>
<</for>>
<<if setup.isCurrentGymRelationshipTrainingAllowed() && setup.canTrainBoxingWithMelisa()>>
<<button "Boxing with Melisa">>
<<if $melisa.departureNotePending>>
<<goto "Melisa Departure Note">>
<<else>>
<<set _gymResult to setup.completeMelisaBoxingWorkout()>>
<<if _gymResult.ok>><<goto "Gym Workout Result">><</if>>
<</if>>
<</button>>
<</if>>
<<if setup.isCurrentGymRelationshipTrainingAllowed() && setup.canTrainWithBradford()>>
<<button "Train with Bradford">>
<<set _bradfordWorkoutResult to setup.completeBradfordWorkout()>>
<<if _bradfordWorkoutResult.ok>><<goto _bradfordWorkoutResult.destination>><</if>>
<</button>>
<</if>>
</div>
<div id="gym-exercise-selection" class="gym-exercise-selection">
<p>Select a training category.</p>
</div>
<<link "Cancel workout">><<run setup.restoreGymWorkoutClothes()>><<goto setup.getGymReturnPassage()>><</link>>
<</nobr>><<nobr>>
<<set _gymExercise to setup.getGymExerciseDefinition($gymSession.exerciseId)>>
<h2><<print $gymSession.isMelisaBoxing ? "Boxing with Melisa" : (_gymExercise ? _gymExercise.label : "Workout")>></h2>
<<gymMedia $gymSession.resultMedia>>
<p>You push through the session and finish tired, but satisfied.</p>
<<if $gymSession.gain > 0>>
<p class="gym-stat-gain"><strong><<print setup.getGymStatLabel($gymSession.stat)>> +1</strong></p>
<<else>>
<p class="gym-stat-gain"><strong><<print setup.getGymStatLabel($gymSession.stat)>> is already at its maximum.</strong></p>
<</if>>
<<if $gymSession.isMelisaBoxing>>
<<if $gymSession.relationshipGain > 0>>
<p class="gym-relationship-gain"><strong>Relationship with Melisa +<<print $gymSession.relationshipGain>></strong></p>
<<elseif $melisa.relationship >= 100>>
<p class="gym-relationship-gain"><strong>Relationship with Melisa is maxed out.</strong></p>
<<else>>
<p class="gym-relationship-gain"><strong>Continue training with Melisa. Something may happen as you spend more time together.</strong></p>
<</if>>
<</if>>
<<if $gymSession.ambienceMedia>>
<p>While catching your breath, your attention briefly wanders across the gym.</p>
<<gymMedia $gymSession.ambienceMedia>>
<</if>>
<<if $gymSession.isMelisaBoxing>>
<<if $gymSession.pendingMelisaEvent>><<link "Finish">><<set _gymDestination to setup.finishGymWorkout()>><<goto _gymDestination>><</link>><<else>><<link "Take a shower">><<set _gymDestination to setup.finishGymWorkout()>><<goto _gymDestination>><</link>><</if>>
<<else>>
<<link "Take a shower">><<set _gymDestination to setup.finishGymWorkout()>><<goto _gymDestination>><</link>>
<</if>>
<</nobr>><<nobr>>
<h2>Gym Shower</h2>
<p>You step beneath the water and wash away the sweat and grime of the workout room.</p>
<<gymMedia $gymSession.showerMedia>>
<<link "Finish showering">><<set _gymShowerDestination to setup.finishGymShower()>><<goto _gymShowerDestination>><</link>>
<</nobr>><<nobr>>
<h2>An occupied shower</h2>
<<gymMedia $gymSession.showerMedia>>
<p>You step into the shower area and find a man already washing beneath the running water. He notices you lingering by the entrance and makes no effort to cover himself.</p>
<<if $corruption >= -39>>
<<link "Help him out">><<run setup.prepareGymShowerSex()>><<goto "Gym Shower Encounter Sex">><</link>><br>
<</if>>
<<if $gymSession.showerRequired>>
<<link "Wait for him to finish">><<run setup.prepareGymShowerAfterEncounter()>><<goto "Gym Shower">><</link>>
<<else>>
<<link "Back out">><<goto setup.getGymReturnPassage()>><</link>>
<</if>>
<</nobr>><<nobr>>
<h2>Helping him out</h2>
<<gymMedia $gymSession.showerSexMedia>>
<p>You remain in the shower and give the stranger the attention he was hoping for.</p>
<<link "Finish">><<set _gymShowerDestination to setup.finishGymShower()>><<goto _gymShowerDestination>><</link>>
<</nobr>><<nobr>>
<h2>Melisa</h2>
<img class="scene-image" src="media/locations/gym/buddy/melisa.jpg" alt="Melisa at the boxing ring">
<p>As you finish, a self-assured black woman by the boxing ring studies you with an appraising look. You recognize her from Vested Interest—one of Bradford's veteran mercenaries, usually returning from contracts while the newer hires are still preparing for theirs.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You're Bradford's new mercenary, aren't you? I'm Melisa. I've survived this work longer than most people last in the district. You have some strength, but strength without discipline will get you hurt. I don't enjoy watching women walk into danger unprepared, so come train boxing with me.<</say>>
<div id="melisa-boxing-offer">
<<link "Agree">>
<<run setup.acceptMelisaBoxingOffer()>>
<<replace "#melisa-boxing-offer">>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>All right. Bradford didn't exactly give me combat lessons with the job. I could learn from someone who's survived this work.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Good answer. Listen to me, put in the work, and I'll teach you what kept me alive when I was the new girl. Next time you work out, find me by the ring.<</say>>
<p><strong>Boxing with Melisa is now available when working out.</strong></p>
[[Continue->Gym]]
<</replace>>
<</link>><br>
<<link "Decline">>
<<run setup.declineMelisaBoxingOffer()>>
<<replace "#melisa-boxing-offer">>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Not right now. I prefer training on my own.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Your choice. I won't drag you into the ring, but Bradford's contracts punish inexperience. When you decide you deserve better odds, you know where to find me.<</say>>
[[Continue->Gym]]
<</replace>>
<</link>><br>
<<link "You spot Bradford...">><<run setup.lockMelisaRouteForBradford()>><<goto "Bradford Gym Encounter">><</link>>
</div>
<</nobr>><<nobr>>
<h2>Bradford</h2>
<img class="scene-image" src="media/locations/gym/bradford/bradfordencounter.png" alt="Bradford exercising at the gym">
<p>You leave the boxing ring behind and approach Bradford between exercises.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Fancy meeting you here.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Hey, $mcname. Came by to get some fuel into those muscles of yours?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You don't need to compliment me that badly.<</say>>
<p>You chuckle and glance down at your still-poor build.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>But if you're that eager to see me improve, I'm looking for a gym buddy.<</say>>
<p>Bradford considers the suggestion for a moment, studying you with the same measured look he uses when weighing a contract.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>All right. I only need the best mercenaries working for me. If training with you helps get you there, I'm in.<</say>>
[[Return->Gym]]
<</nobr>><<nobr>>
<h2>Training with Bradford</h2>
<<gymMedia $gymSession.resultMedia>>
<<if $gymSession.resultMedia && $gymSession.resultMedia.name is "nakedexe1">>
<p>Since becoming intimate with Bradford, you have started arriving for these private workouts in increasingly less clothing. Today, your bottoms leave almost nothing hidden when you bend over the equipment, and you make no real effort to protect Bradford from the view.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You know exactly what you're doing dressed like that. Keep your hips steady and finish the set.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Ngh... then keep your eyes on my form and count.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>My eyes are precisely where they need to be. One more.<</say>>
<<elseif $gymSession.resultMedia && $gymSession.resultMedia.name is "nakedexe2">>
<p>Your idea of suitable workout clothing has become considerably more daring around Bradford. This time you train without panties, leaving your bare ass completely exposed whenever the exercise pushes your shirt upward.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>No panties today. Bold choice. Don't let the distraction ruin your technique.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Hah... whose distraction are we talking about?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Finish the repetition, and perhaps I'll answer.<</say>>
<<elseif $gymSession.resultMedia && $gymSession.resultMedia.name is "nakedexe3">>
<p>You chose another loose top for the workout. During the exercise it shifts aside, letting one breast poke out. The first slip might have been accidental; the way you continue without fixing it is much harder to explain.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Your breast is out again, $mcname.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Is it distracting you from counting?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Not enough to let you escape the last set. Lift.<</say>>
<<else>>
<p>Bradford keeps you moving through a punishing strength routine, allowing only enough rest to reset your stance before the next repetition.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Come on, $mcname. One more. You've got more in you than that—show me.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Ngh... I'm not stopping. Just keep counting.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>That's it. Keep your form tight. Every hard rep here is one less mistake on a contract.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Hah... I've got this. Keep going.<</say>>
<</if>>
<<if $gymSession.gain > 0>>
<p class="gym-stat-gain"><strong>Strength +1</strong></p>
<<else>>
<p class="gym-stat-gain"><strong>Strength is already at its maximum.</strong></p>
<</if>>
<<if $gymSession.relationshipGain > 0>>
<p class="gym-relationship-gain"><strong>Relationship with Bradford +<<print $gymSession.relationshipGain>></strong></p>
<<elseif $bradford.relationship >= 100>>
<p class="gym-relationship-gain"><strong>Relationship with Bradford is maxed out.</strong></p>
<<else>>
<p class="gym-relationship-gain"><strong>Continue training with Bradford. Something may happen as you spend more time together.</strong></p>
<</if>>
<<if $gymSession.pendingBradfordEvent>><<link "Finish">><<set _bradfordDestination to setup.finishBradfordWorkout()>><<goto _bradfordDestination>><</link>><<else>><<link "Take a shower">><<set _bradfordDestination to setup.finishBradfordWorkout()>><<goto _bradfordDestination>><</link>><</if>>
<</nobr>><<nobr>>
<<set _bradfordMilestone to setup.resolveBradfordRelationshipMilestone(20)>>
<h2>Caught off guard</h2>
<img class="scene-image" src="media/locations/gym/bradford/exposing.webp" alt="A prankster exposing the main character during her workout">
<p>You bend over the machine and focus on forcing out another repetition with your back turned to the room. A girl who noticed Bradford training with you suddenly rushes over, grabs the waistband of your pants, and yanks them down before you can react. Your panties—and nearly your entire ass—are left exposed to the gym, especially Bradford.</p>
<p>The girl darts away laughing before either of you can catch her. You hurriedly pull your pants back into place. Part of you recognizes the prank as almost funny, but the thought that Bradford just saw you so exposed sends heat into your cheeks.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Great... Bradford probably got a perfect view of my almost-naked ass.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Cover up, $mcname. And don't mind the idiots in this gym. They have too much time and not enough sense.<</say>>
<<if _bradfordMilestone.ok>>
<p class="gym-relationship-gain"><strong>Your relationship with Bradford can now progress beyond 20.</strong></p>
<</if>>
[[Return->Gym]]
<</nobr>><<nobr>>
<<set _bradfordMilestone to setup.resolveBradfordPrivateGymEvent()>>
<h2>Behind a locked door</h2>
<p>After the workout, Bradford approaches while you are catching your breath and gestures toward a quieter corridor at the back of the gym.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Follow me, $mcname. There's something I want to show you.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>All right. Lead the way.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Maybe it's a new technique. Or some new equipment. Or maybe he wants to put those veiny hands all over my body—no. No, that can't be it. Focus, $mcname.<</say>>
<p>Bradford takes out a key, unlocks an unmarked door, and holds it open for you.</p>
<img class="scene-image" src="media/locations/gym/bradford/privategym.jpg" alt="Bradford's private gym room">
<p>Beyond it is a smaller training room filled with well-maintained equipment, but not another person in sight.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>This is my private gym room. I train here when I don't want anyone bothering me. We can work out here together from now on, and the idiots outside can stop interfering with you.<</say>>
<p>The offer catches you off guard. Bradford is giving up his private refuge for you, and the thought brings an unmistakable warmth to your cheeks. When you look at him, however, his expression is completely sincere. He really means exactly what he said. There cannot be another reason for it... right?</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>That's... surprisingly thoughtful of you. Thank you, Bradford.<</say>>
<<if _bradfordMilestone.ok>>
<p class="gym-relationship-gain"><strong>Your relationship with Bradford can now progress beyond 30.</strong></p>
<</if>>
[[Return->Gym]]
<</nobr>><<nobr>>
<<set _bradfordMilestone to setup.resolveBradfordNipslipEvent()>>
<h2>An unnoticed slip</h2>
<p>Inside the private room, you sit against the backrest with a weight in each hand. You drive both weights above your head, lower them under control, and repeat while Bradford works a machine directly in front of you.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Good. Keep pushing, $mcname. Control them on the way down, then drive them straight back up.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Ngh... one more set. I can do this.<</say>>
<img class="scene-image" src="media/locations/gym/bradford/nakedexe3.webp" alt="The main character accidentally exposing her breast during training">
<p>During the next set, your loose shirt folds aside. One bare breast slips into view, but your attention remains fixed on the weights and the burning strain in your shoulders.</p>
<p>Bradford notices. His own exercise slows as his eyes settle on the accidental exposure. He says nothing, allowing himself a long look before returning to his machine as though nothing happened.</p>
<p>Only after finishing the set do you glance down, notice the displaced fabric, and hurriedly fix your shirt. Bradford is already training normally. You have no idea how long you were exposed in front of your boss—or whether he noticed at all.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Please tell me he didn't see that. Maybe he was too focused on his own training... please.<</say>>
<<if $gymSession.gain > 0>>
<p class="gym-stat-gain"><strong>Strength +1</strong></p>
<<else>>
<p class="gym-stat-gain"><strong>Strength is already at its maximum.</strong></p>
<</if>>
<<if _bradfordMilestone.ok>>
<p class="gym-relationship-gain"><strong>Your relationship with Bradford can now progress beyond 40.</strong></p>
<</if>>
[[Finish->Gym]]
<</nobr>><<nobr>>
<h2>An invitation</h2>
<p>After the training session, Bradford waits until you have caught your breath before approaching.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You worked hard today. Come have a drink with me at the Bar. We can talk somewhere that doesn't smell like rubber mats and sweat.<</say>>
<div id="bradford-drinks-offer">
<<link "Agree">><<run setup.acceptBradfordDrinksOffer()>><<goto "Drinks with Bradford">><</link>><br>
<<link "Refuse for now">>
<<run setup.postponeBradfordDrinksOffer()>>
<<replace "#bradford-drinks-offer">>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Not tonight. Could we do it another time?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Another time, then. The offer stands.<</say>>
[[Return->Gym]]
<</replace>>
<</link>>
</div>
<</nobr>><<nobr>>
<h2>Drinks with Bradford</h2>
<img class="scene-image" src="media/locations/vestedinterest/drinks/sitattable.jpg" alt="Drinks at a table in Vested Interest">
<p>You return to Vested Interest together and settle at a quieter table. Bradford orders several drinks for both of you before leaning back in his chair.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You know plenty about how I ended up here, but I barely know anything about you. Were you always a handler?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>No. I used to take the contracts myself. I was good at it, too—good enough to think I could keep doing it forever.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>What changed?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>A contract went bad. I finished it, but my shoulder took enough damage to end my career. It works for ordinary life. It doesn't hold up when a fight turns ugly.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I'm sorry. That must have been hard to accept.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>It was. Eventually I realized I could keep mercenaries alive by handling their work properly. Vested Interest gave me somewhere to do that.<</say>>
[[Keep drinking->Drinks with Bradford Late]]
<</nobr>><<nobr>>
<h2>Later that night</h2>
<img class="scene-image" src="media/locations/vestedinterest/drinks/sitattable.jpg" alt="A late night of drinking with Bradford">
<p>One story becomes another and the empty glasses multiply. Bradford's usual reserve gradually loosens, while your own words become warmer, louder, and far less coordinated.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You have real potential, $mcname. More than you understand yet. That's why I push you—I want to see what you become when you stop doubting yourself.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You really think that? Because you're... you're much nicer when there's this many Bradfords in front of me.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>There's only one of me. Drink some water.<</say>>
<p>You attempt to answer, but fatigue and alcohol win first. Your head sinks onto your folded arms, and the Bar disappears around you.</p>
[[Close your eyes->Bradford Apartment Morning]]
<</nobr>><<nobr>>
<<run setup.advanceBradfordDrinksMorning()>>
<h2>An unfamiliar morning</h2>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/bedroom.jpg" alt="The unfamiliar bedroom in Bradford's apartment">
<p>You wake beneath unfamiliar sheets in a bedroom you do not recognize. Your head pounds, your mouth is dry, and several uneasy seconds pass before the night begins returning in scattered fragments.</p>
<p>The door opens after a while. Bradford steps inside, notices that you are awake, and stops at a respectful distance.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Bradford...? What happened? Where am I?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>My apartment. You passed out at the table. I didn't know where you lived, so I brought you here for the night.<</say>>
<p>You look around again—and then down at yourself. You are wearing nothing but your underwear. Your thoughts race through the blank spaces in your memory.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Why am I almost naked? Did we... did something happen? I don't remember anything.<</say>>
[[Ask him->Bradford Apartment Explanation]]
<</nobr>><<nobr>>
<h2>The explanation</h2>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/bedroom.jpg" alt="Bradford's bedroom">
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Before your imagination runs away with you: nothing happened. I put you in bed and was going to sleep on the sofa. You woke up, shouted that it was “too hot in this shithole,” stripped down to your underwear, and tried to throw your clothes at a lamp.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I calmed you down, made sure you were asleep, and left. That's all.<</say>>
<p>Heat floods your entire face. You drag the sheets up to cover yourself and struggle to make your voice work.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I-I did what? Oh, Protectorate... Bradford, I am so sorry. And... thank you. For taking care of me.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>No thanks needed. Take your time and get dressed. I'll give you some privacy.<</say>>
<p>He leaves and closes the bedroom door behind him, giving you time to recover what remains of your dignity.</p>
[[Get dressed->Bradford Apartment Departure]]
<</nobr>><<nobr>>
<<set _bradfordMilestone to setup.completeBradfordDrinksEvent()>>
<h2>A quick departure</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="The living area in Bradford's apartment">
<p>Once dressed, you step out of the bedroom. Bradford is waiting in the living area, already looking composed despite the previous night's drinking.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I can make breakfast before you go. You should eat something after last night.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Thank you, but I should go. I think I've embarrassed myself enough for one morning.<</say>>
<p>You make a hurried exit and head back into the Slums, still unable to stop your cheeks from burning whenever you remember Bradford's story.</p>
<<if _bradfordMilestone.ok>>
<p class="gym-relationship-gain"><strong>Your relationship with Bradford can now progress beyond 50.</strong></p>
<</if>>
[[Leave->Slums]]
<</nobr>><<nobr>>
<h2>The walk home</h2>
<p>After training, you and Bradford emerge from the gym's separate locker rooms at almost the same time. With no plans waiting for you, you fall into step beside him.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Mind if I tag along on your walk home? I don't have anything else to do.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I don't mind. Come on.<</say>>
<p>You leave the gym together and walk through the Slums. For a while, the conversation is easy—until Bradford glances at you with restrained amusement.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You talk to me more easily now. Does that mean you're finally over being embarrassed about that night?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Don't remind me! That night was awful.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>It wasn't that awful. I got to wrestle a drunk, half-naked girl into bed. At least top ten among the more entertaining things I've done.<</say>>
<p>Your face burns. Laughing despite yourself, you give him a playful hit on the shoulder and tell him to stop. By miserable chance, your hand lands directly over his old injury. Bradford winces before forcing his expression back under control.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Bradford! I'm sorry—I wasn't thinking. Did I hurt you? Let me help.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>It's all right. You caught the old injury, that's all. My apartment is just around the corner.<</say>>
<p>Feeling responsible, you refuse to leave him to manage it alone and insist on accompanying him inside.</p>
[[Help him home->Bradford Shoulder Massage]]
<</nobr>><<nobr>>
<h2>A sore shoulder</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="Bradford's apartment">
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Take off your shirt and lie face-down on the sofa.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You don't need to do this. The pain will pass.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I caused it, so I'm helping. Shirt off. Sofa. Now.<</say>>
<p>Bradford recognizes that you will not relent. He removes his shirt and lies face-down. To his surprise, you straddle his back and carefully press your fingers into the hard muscles around his injured shoulder.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>What are you doing?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>What do you think? I'm trying to relax these shoulder muscles.<</say>>
<p>He exhales and finally lets himself settle beneath you. As you continue working the tension from his shoulder, his initial resistance fades.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Is this actually helping?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Yes... keep going.<</say>>
<p>The low approval in his voice makes your hands pause. A warm tingle travels through your body, and an embarrassing dampness gathers between your legs. You swallow, pretend nothing happened, and awkwardly resume the massage.</p>
<p>After a while, you climb off his back and kneel beside the sofa, giving him one final reassuring pat.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Better?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Much better. You were right to insist.<</say>>
[[Let him stand->Bradford Accidental Reveal]]
<</nobr>><<nobr>>
<h2>An accidental view</h2>
<p>Bradford rises from the sofa. His trousers must have shifted downward while he lay beneath you, because from where you are kneeling, you suddenly find yourself face-to-face with his massive penis, nearly fully revealed.</p>
<img class="scene-image" src="media/characters/bradford/cockreveal.webp" alt="Bradford accidentally revealing himself">
<p>You spring upright so quickly that you almost stumble over the sofa.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I-I just remembered something! Something important. I have to go. Right now.<</say>>
<p>Before Bradford can answer, you sprint from his apartment and hurry all the way home.</p>
[[Run home->Bradford Fantasy]]
<</nobr>><<nobr>>
<h2>An awakened curiosity</h2>
<p>You bury yourself in the old sofa, mortified by what happened. Yet as your breathing settles, embarrassment slowly gives way to arousal. You have always thought Bradford handsome, but seeing him from so close has awakened thoughts you can no longer push aside.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>It was so big... What would he do to me with that? What would he taste like?<</say>>
<p>Your hand slips between your legs. You surrender to the fantasy, imagining Bradford's powerful body and the hidden intensity beneath his collected manner.</p>
<video src="media/myroom/exercise/masturbate1.mp4" autoplay loop muted controls></video>
<p>A heavy orgasm finally breaks the tension. When your breathing steadies, you gather yourself and retreat to your room—though the memory follows you there.</p>
<<set _bradfordMilestone to setup.completeBradfordShoulderEvent()>>
<<if _bradfordMilestone.ok>>
<p class="gym-relationship-gain"><strong>Your relationship with Bradford can now progress beyond 60.</strong></p>
<</if>>
[[Return to your room->My room]]
<</nobr>><<nobr>>
<h2>Something to discuss</h2>
<p>After training, Bradford waits until the two of you have caught your breath. His expression is unusually careful when he approaches you.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Do you remember what happened the other day? Can we talk about it?<</say>>
<p>You wince. The image of his massive penis immediately fills your thoughts—followed by the vivid memory of what you did alone in your room afterward.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Y-yes, we can talk. I just don't know what there is to talk about.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You helped me when my shoulder was hurting. I'd like to return the kindness. I made some food at home. Come eat with me.<</say>>
<p>The simple care behind the invitation leaves you momentarily stunned. Bradford prepared something for you—not as your boss or handler, but because he wanted to.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I'd like that. Yes.<</say>>
[[Go with Bradford->Bradford Burned Cake]]
<</nobr>><<nobr>>
<h2>A smoky welcome</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="Bradford's apartment">
<p>You enter Bradford's apartment together and are greeted by the unmistakable smell of something burning.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Fuck! Fuck! FUCK!<</say>>
<p>Bradford bolts into the kitchen. You hurry after him and find him pulling a tray from the oven. Whatever he had attempted to bake is now blackened beyond recognition.</p>
<img class="scene-image" src="media/locations/melisasapartment/kitchen/kitchen.webp" alt="Bradford's kitchen">
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I'm sorry. I've never baked anything before. This was supposed to be a thank-you cake.<</say>>
<p>The ruined cake hardly matters. The thought of this collected, capable man attempting something completely unfamiliar simply to thank you melts your heart.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Don't worry about it. Throw that away and let me cook something for both of us.<</say>>
[[Save dinner->Dinner with Bradford]]
<</nobr>><<nobr>>
<h2>Dinner together</h2>
<img class="scene-image" src="media/locations/melisasapartment/kitchen/kitchen.webp" alt="Cooking dinner in Bradford's kitchen">
<p>Bradford consigns the burned cake to the trash and takes a seat at the kitchen table. He watches as you gather what survived his culinary experiment and turn it into a proper dinner.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Whatever you're doing smells better than my attempt already.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>That isn't a difficult standard to beat. Your cake could qualify as armor.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Then perhaps I should sell it at the Gear Stall.<</say>>
<p>The meal turns out well. Bradford eats with sincere appreciation and praises your cooking without reservation.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>That was excellent. Go relax in the living room. You cooked, so I'll wash the dishes.<</say>>
[[Relax in the living room->Bradford Evening]]
<</nobr>><<nobr>>
<h2>Closer</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="Bradford's living room">
<p>You settle onto the sofa. Bradford joins you after washing the dishes, switches on the television, and sits close beside you. Somewhere during the program, without consciously deciding to, you snuggle nearer and rest your head against his chest.</p>
<p>Bradford extends an arm around your back and draws you comfortably against his large frame. You remain like that for a while, warm and content, until you notice the fabric of his trousers beginning to lift.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Is he really getting hard just because I'm this close? What do I do? Ask him? No, that's too strange. Touch it? No... no, I couldn't.<</say>>
<p>Your indecision makes you shift restlessly in his embrace. Bradford notices and finally looks down at you.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>It doesn't bite. But be careful about what you decide to do now.<</say>>
<p>He knows that you noticed. There is no graceful way to retreat from the moment, and the only decision that makes any sense inside your racing mind is to reach out and touch him.</p>
<<link "Touch him">>
<<set _bradfordSexStart to setup.startBradfordSex()>>
<<goto _bradfordSexStart.destination>>
<</link>>
<</nobr>><div id="arthur-sex-ui">
<<arthurSexUI>>
</div><<nobr>>
<<set _bradfordMilestone to setup.completeBradfordIntimacyEvent()>>
<h2>Afterward</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="Bradford's living room after their intimacy">
<p>The fierce, commanding man who took control only moments ago disappears as soon as the intensity passes. Bradford gathers you carefully against his chest, checks that you are comfortable, and holds you beneath the steady warmth of his arms.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Easy. Breathe with me. Did I hurt you anywhere?<</say>>
<p>You are still panting, your body trembling faintly against him. Bradford studies your shaken expression, and concern quickly replaces the last traces of his earlier intensity.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I'm sorry, $mcname. I like sex rough, and I let myself get carried away. That may have been more than you were ready to bear.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>It was a surprise. A very big one. I'm sore, and I might need a moment before my legs remember how to work... but some of it felt good. Really good.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>If this means we keep seeing each other, I can adjust. Just give me a chance to learn what to expect from you.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>We will keep seeing each other. But you don't have to endure anything for that. Next time, you tell me what you can take. If anything is too much, I stop. No argument.<</say>>
<p>He brings you water, helps you clean up, and returns to the sofa to cradle you against him until your trembling finally subsides. His touch is patient and soothing—the caring bear you knew before, as if the beast from moments ago had never existed.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Thank you for the meal. Well... both meals.<</say>>
<p>You give him a playful wink as you gather your things.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I should head home. I'll see you at the gym.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You will—and I'm walking you home. I'm not sending you through the Slums alone this late, especially when your legs are still unsteady.<</say>>
<p>Bradford accompanies you through the district, keeping you close to his side as the two of you cross the dim streets. The walk is quiet and comfortable, his steady presence making the Slums feel less threatening than usual.</p>
<p>When you reach the battered building you call home, Bradford stops outside rather than following you in.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Here we are. Get inside, drink some water, and rest. I'll see you at the gym.<</say>>
<p>You thank him, but neither of you moves immediately. Before embarrassment can catch up with the impulse, you rise onto your toes, catch Bradford by the shirt, and kiss him.</p>
<p>For one startled heartbeat, the normally unshakable man stands completely still. Then one of his hands settles gently at your waist and he returns the kiss, warm and careful—a striking contrast to the ferocity he showed earlier.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>That was for walking me home. Goodnight, Bradford.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Goodnight, $mcname. I think I could get used to walking you home.<</say>>
<p>He waits until you reach the entrance, then gives you a final nod and turns toward his own apartment.</p>
<<if _bradfordMilestone.ok>>
<p class="gym-relationship-gain"><strong>Your relationship with Bradford can now progress beyond 70.</strong></p>
<</if>>
[[Go inside->Slums Home]]
<</nobr>><<nobr>>
<h2>An invitation after training</h2>
<p>After the workout, Bradford catches up with you near the gym exit. He has already recovered his usual composure, though the faint warmth in his expression is meant only for you.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Do you want to drop by my apartment after this? We could eat, put our feet up, and spend some time without gym equipment between us.<</say>>
<div id="bradford-apartment-invitation">
<<link "Go with Bradford">>
<<run setup.acceptBradfordApartmentOffer()>>
<<goto "Bradford Apartment Evening Meal">>
<</link>><br>
<<link "Not today">>
<<run setup.postponeBradfordApartmentOffer()>>
<<replace "#bradford-apartment-invitation">>
<<say $mcname setup.getMcPortrait() "jane">>I'd like to, but not today. Can we leave it for another time?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Of course. The invitation remains open.<</say>>
[[Return->Gym]]
<</replace>>
<</link>>
</div>
<</nobr>><<nobr>>
<h2>A quiet evening</h2>
<img class="scene-image" src="media/locations/melisasapartment/kitchen/kitchen.webp" alt="Bradford's kitchen">
<p>You return to Bradford's apartment together. This time, he wisely gives you command of the kitchen. You prepare something quick from what he has available while he sets the table and follows your instructions with unusual discipline.</p>
<<say $mcname setup.getMcPortrait() "jane">>Nothing elaborate tonight. I refuse to rescue another cake from you.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>A sensible precaution. It already smells better than anything I would have attempted.<</say>>
<p>The simple meal disappears quickly. Once the dishes are cleared, you settle together on the living-room sofa.</p>
[[Relax with Bradford->Bradford Second Round]]
<</nobr>><<nobr>>
<h2>Long postponed</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="Bradford's living room">
<p>For a while, the two of you sit in easy silence. Bradford's arm rests behind you along the sofa, and your body gradually settles against his side as if it belongs there.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Are you interested in that long-postponed second round?<</say>>
<p>You look up at him, laugh, and feel anticipation spread warmly through you.</p>
<<say $mcname setup.getMcPortrait() "jane">>I was beginning to wonder whether you would ever ask.<</say>>
<<link "Stay with Bradford">>
<<set _bradfordSexStart to setup.startBradfordRepeatSex()>>
<<goto _bradfordSexStart.destination>>
<</link>>
<</nobr>><<nobr>>
<h2>A place beside him</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="Bradford caring for the main character in his living room">
<p>When the intensity passes, Bradford's roughness vanishes with it. He gathers you close, brings you water, and patiently helps you recover until your breathing steadies.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Easy. Take your time. I'm not letting you stand until those legs stop shaking.<</say>>
<p>You rest against his broad chest while his hand moves slowly over your back. After a long, comfortable silence, he speaks with an awkward casualness that fails to hide how seriously he means the question.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Maybe you should move in with me. I could use someone more intelligent to keep me under control around this apartment.<</say>>
<p>You giggle, but the compliment sends heat into your cheeks. The offer feels natural—safer than Arthur's apartment and closer to the man whose company has become so important to you.</p>
<<say $mcname setup.getMcPortrait() "jane">>Someone clearly has to supervise you. All right, Bradford. I'll move in.<</say>>
<p>Bradford's restrained smile tells you exactly how much your answer means to him.</p>
[[Get dressed and collect your things->Bradford Waits Outside]]
<</nobr>><<nobr>>
<h2>One last visit</h2>
<p>Once you are both dressed, Bradford walks beside you to the battered building where you rent your room. He stops near the entrance and looks up at its stained facade.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I'll wait here. Pack what matters and come straight back down. If you need me, shout.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>It won't take long. I'll be right back.<</say>>
[[Go inside->Bradford Move Out Packing]]
<</nobr>><<nobr>>
<h2>Packing</h2>
<img class="scene-image" src="media/myroom/myroom.jpg" alt="The main character packing her belongings">
<p>You enter your cramped room and begin packing quickly. Each possession placed into your luggage makes the walls feel a little less like a prison. You are nearly finished when Arthur appears in the doorway.</p>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>What do you think you're doing?<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I'm moving out. I've packed my things, and I'm leaving.<</say>>
<p>Arthur's face twists as he realizes that your departure means losing both your rent and the control he has enjoyed over you.</p>
[[Finish packing->Arthur Attacks During Move Out]]
<</nobr>><<nobr>>
<h2>Arthur's last mistake</h2>
<img class="scene-image" src="media/characters/bradford/arthurattack.webp" alt="Arthur attacking the main character as she tries to move out">
<p>Arthur blocks the doorway and grabs at your luggage. When you refuse to release it, the argument becomes a struggle. He catches your clothes and tears the fabric in the commotion, exposing part of your body.</p>
<<say $mcname setup.getMcPortrait() "jane">>Let go of me! Bradford! Help!<</say>>
<p>Arthur forces you down and puts his hands on you. Your scream carries through the apartment and out toward the street.</p>
[[Call for Bradford->Bradford Intervenes]]
<</nobr>><<nobr>>
<h2>Blood in the room</h2>
<p>Heavy footsteps thunder through the apartment. Bradford charges into your room and sees Arthur on top of you, still touching you as you struggle beneath him.</p>
<img class="scene-image" src="media/characters/bradford/arthurstab.webp" alt="Bradford stabbing Arthur while rescuing the main character">
<p>Bradford's expression turns cold with lethal fury. He hauls Arthur away, draws his knife, and drives it into the side of Arthur's neck. When he pulls the blade free, blood surges through Arthur's clutching fingers and splashes across you.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You will never touch her again.<</say>>
<p>Arthur collapses and bleeds out on the floor. Shock overwhelms you; the room tilts, Bradford's voice becomes distant, and darkness closes over your vision.</p>
[[Lose consciousness->Bradford Carries You Home]]
<</nobr>><<nobr>>
<h2>Carried to safety</h2>
<p>Bradford checks that you are breathing, then lifts your unconscious body over one shoulder despite the pain in his old injury. He takes your luggage in his free hand and leaves Arthur bleeding on the floor behind him.</p>
<p>He carries you and everything you own through the Slums, never slowing until the door of his apartment closes safely behind you.</p>
[[Continue->Bradford Cares for You]]
<</nobr>><<nobr>>
<h2>Safe in Bradford's care</h2>
<img class="scene-image" src="media/locations/melisasapartment/bedroom/bedroom.jpg" alt="Bradford's bedroom">
<p>Bradford puts your luggage aside and focuses entirely on you. He removes your torn, bloodstained clothes, places them in the laundry basket, and cleans every trace of blood from your skin with a damp towel.</p>
<p>He finds fresh clothes of his own, carefully dresses you in them, and lays you beneath the covers. Only when he is certain that you are resting comfortably does he leave the bedroom to keep watch nearby.</p>
[[Rest->Bradford New Home Awakening]]
<</nobr>><<nobr>>
<h2>Your new home</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="Bradford's living room">
<p>Several hours later, you wake in an unfamiliar bed wearing clothes far too large for you. Confused, you make your way into the living room and find Bradford waiting there.</p>
<p>The memories return all at once. Bradford rises immediately and approaches slowly, giving you time to recognize him before he reaches for you.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You're safe now. This is your home too, and nobody will hurt you here. Not while I'm alive.<</say>>
<p>Your eyes fill with tears. You step into his arms and cling to him, the last of your fear breaking loose against his chest.</p>
<<say $mcname setup.getMcPortrait() "jane">>Thank you... for coming for me, for bringing me here—for everything you've done.<</say>>
<p>Bradford holds you securely and lets you cry until the trembling passes.</p>
[[Stay with Bradford->Bradford Unpacking and Rent]]
<</nobr>><<nobr>>
<<set _bradfordMoveIn to setup.completeBradfordMoveIn()>><<run UIBar.update()>>
<h2>Making room</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="The main character settling into Bradford's apartment">
<p>Several more hours pass. With Bradford's help, you unpack your belongings and find a place for everything. The apartment no longer feels like somewhere you are merely recovering—it begins to feel like your home.</p>
<p>Once the last bag is emptied, a practical concern returns to your mind.</p>
<<say $mcname setup.getMcPortrait() "jane">>Bradford... how much is my part of the rent going to be?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Nothing. You don't need to pay me anything.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I'm not going to live here as a burden. I'll pay c200 every week—or I'll cook for you. Every meal takes c50 off what I owe, until the rent is covered.<</say>>
<p>Bradford opens his mouth to argue, but hesitates. He has already experienced your cooking and knows exactly how weak his position is.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>I don't want your credits. But I do love your cooking... Fine. c200 a week, less c50 whenever you cook for us. I reserve the right to complain about this arrangement.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>You can complain while you eat.<</say>>
<<if _bradfordMoveIn.ok>>
<p class="gym-relationship-gain"><strong>Your relationship with Bradford can now progress beyond 80.</strong></p>
<</if>>
[[Settle into your new home->Bradford Apartment Living Room]]
<</nobr>><<nobr>>
<h2>An awkward return</h2>
<<set _melisaMedia to setup.getGymBuddyMediaByName("showerencounter1")>>
<<gymMedia _melisaMedia>>
<p>You return to the bathroom for the hairbrush you forgot and stop short when you find Melisa standing there naked.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Sorry! I just left my hairbrush in here. I didn't mean to walk in on you.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Relax. You're not bothering me. Take your brush.<</say>>
[[Leave the bathroom->Melisa Shower Glimpse Aftermath]]
<</nobr>><<nobr>>
<<set _melisaMedia to setup.getGymBuddyMediaByName("showerencounter2")>>
<<gymMedia _melisaMedia>>
<p>You leave quickly, clutching the forgotten brush. The image of Melisa follows you well beyond the bathroom door.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Why did seeing her naked make me this wet...?<</say>>
[[Return->Gym]]
<</nobr>><<nobr>>
<h2>Too close</h2>
<<set _melisaMedia to setup.getGymBuddyMediaByName("gymkiss1")>>
<<gymMedia _melisaMedia>>
<p>You both move at once during a close drill. Instead of slipping past one another, your lips meet.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Melisa—I am so sorry. That was an accident.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I know. Stop apologizing—I didn't mind at all.<</say>>
<p>A cheeky smirk plays across her face before she steps back into stance.</p>
[[Return->Gym]]
<</nobr>><<nobr>>
<h2>Another bathroom encounter</h2>
<<set _melisaMedia to setup.getGymBuddyMediaByName("showerencounter1")>>
<<gymMedia _melisaMedia>>
<p>You encounter Melisa in the bathroom again. This time, neither of you looks away.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Get in. We can share the shower and save some time—unless you're suddenly shy around me.<</say>>
<div id="melisa-shower-choice">
<<link "Agree">><<run setup.resolveMelisaShowerOffer(true)>><<goto "Melisa Shared Shower">><</link>><br>
<<link "Disagree">>
<<run setup.resolveMelisaShowerOffer(false)>>
<<replace "#melisa-shower-choice">>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I think I'll wait until you're finished.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Suit yourself.<</say>>
[[Return->Gym]]
<</replace>>
<</link>>
</div>
<</nobr>><<nobr>>
<h2>Sharing the shower</h2>
<<set _melisaMedia to setup.getGymBuddyMediaByName("shower1")>>
<<gymMedia _melisaMedia>>
<p>You step beneath the water together. Saving time is quickly forgotten as tentative touches become lingering kisses and curious hands explore wet skin.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I had a feeling you weren't really that shy.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Maybe I just needed the right training partner.<</say>>
[[Finish showering->Gym]]
<</nobr>><<nobr>>
<h2>More than sparring</h2>
<<set _melisaMedia to setup.getGymBuddyMediaByName("gymsex1")>>
<<gymMedia _melisaMedia>>
<p>The sparring session grows heated until neither of you is paying attention to the bell anymore.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I want you. Come here—I'm not waiting until we're somewhere private.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Then stop talking and kiss me.<</say>>
[[Continue->Melisa Gym Sex Continued]]
<</nobr>><<nobr>>
<<set _melisaMedia to setup.getGymBuddyMediaByName("gymsex2")>>
<<gymMedia _melisaMedia>>
<p>You surrender to the moment, hands and mouths roaming without restraint.</p>
[[Continue->Melisa Gym Sex Finish]]
<</nobr>><<nobr>>
<<set _melisaMedia to setup.getGymBuddyMediaByName("gymsex3")>>
<<gymMedia _melisaMedia>>
<p>By the time you finally separate, the workout has become something neither of you will pretend was accidental.</p>
[[Get dressed->Gym]]
<</nobr>><<nobr>>
<h2>An invitation</h2>
<img class="scene-image" src="media/characters/melisa/melisa.jpg" alt="Melisa">
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>We've spent enough time hitting each other in this place. Let me cook for you at my apartment. A real first date—just the two of us.<</say>>
<div id="melisa-date-choice">
<<link "Accept">><<set $melisa.datePending to false>><<goto "Melisa First Date">><</link>><br>
<<link "Maybe another time">>
<<replace "#melisa-date-choice">>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I want to, but not tonight. Can I take you up on it later?<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You can. The invitation stays open.<</say>>
[[Return->Gym]]
<</replace>>
<</link>>
</div>
<</nobr>><<nobr>>
<<set $melisa.datePending to false>>
<h2>First date with Melisa</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="Melisa's apartment">
<p>Melisa's apartment is warmer and more comfortable than you expected. She serves dinner without ceremony, and the conversation comes more easily once neither of you is circling a boxing ring.</p>
<img class="scene-image" src="media/characters/melisa/date1.jpg" alt="Dinner with Melisa">
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I'm glad you came. Tonight, neither of us has to prove how tough we are.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>That might take some getting used to—but I'm glad I came too.<</say>>
[[Finish dinner->Melisa First Date After Dinner]]
<</nobr>><<nobr>>
<h2>After dinner</h2>
<p>When the last plates are cleared away, Melisa stretches and rolls one powerful shoulder.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I'm still sweaty from the gym. I'm taking a bath. Make yourself comfortable in the living room.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Of course. Take your time—I'll wait here.<</say>>
<p>Melisa disappears into the bathroom. You settle into the quiet living room, still smiling to yourself about how different she seems away from Vested Interest and the boxing ring.</p>
<p>A sudden yell tears through the apartment.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">><<print $mcname>>! Help!<</say>>
<p>You are on your feet before you can think. Heart pounding, you rush toward the bathroom, terrified that your friend has slipped or hurt herself.</p>
[[Rush into the bathroom->Melisa First Date Bath]]
<</nobr>><<nobr>>
<h2>A call for help</h2>
<img class="scene-image" src="media/characters/melisa/date2.webp" alt="Melisa waiting in the bath">
<p>You throw open the door. Melisa is sitting naked in the bath, perfectly unharmed, watching you with a broad, knowing smile.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Melisa! You scared the shit out of me! I thought something happened to you.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Something did. I discovered I can't wash my own back properly.<</say>>
<p>Her smile only grows as her gaze travels over you.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>So undress right fucking now and get in here. I need your help.<</say>>
[[Join her in the bath->Melisa First Date Bath Together]]
<</nobr>><<nobr>>
<h2>Together in the bath</h2>
<img class="scene-image" src="media/characters/melisa/date3.webp" alt="MC and Melisa together in the bath">
<p>You shed your clothes and climb into the warm water. Any pretence of washing Melisa's back vanishes almost immediately. She pulls you close, and soon you are kissing, tumbling against one another, and splashing water over the edge as teasing hands explore wherever they please.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Much better. I knew you'd be helpful.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You could have asked without making me think you were dying.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>And miss the way you ran in to rescue me? Not a chance.<</say>>
[[Continue->Melisa First Date Bedroom]]
<</nobr>><<nobr>>
<h2>Out of the bath</h2>
<img class="scene-image" src="media/characters/melisa/date4.webp" alt="Melisa leading MC out of the bathroom">
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>We're going to flood the bathroom. Come on—we're taking this outside.<</say>>
<p>Melisa rises and leads you from the bath without giving either of you time to dress. The trail of water across the apartment is quickly forgotten when she pulls you against her again.</p>
[[Continue->Melisa First Date Bedroom Continued]]
<</nobr>><<nobr>>
<h2>Melisa's bedroom</h2>
<img class="scene-image" src="media/characters/melisa/date5.webp" alt="MC and Melisa continuing their first night together">
<p>In the privacy of her bedroom, playful teasing gives way to open hunger. Melisa remains confidently in control, but every touch is attentive, guiding you deeper into the pleasure you share.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>That's it. Tonight, you listen to me—and I take care of you.<</say>>
[[Continue->Melisa First Date Bedroom Finish]]
<</nobr>><<nobr>>
<img class="scene-image" src="media/characters/melisa/date6.webp" alt="MC and Melisa at the end of their first night together">
<p>By the time the urgency finally fades, both of you are exhausted. You remain tangled together in Melisa's bed, too comfortable and too tired to consider crossing the Slums alone at this hour.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You're staying here tonight. That's not a question.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I wasn't planning to argue.<</say>>
[[Stay the night->Melisa First Date Morning]]
<</nobr>><<nobr>>
<<run setup.advanceMelisaFirstDateMorning()>><<run UIBar.update()>>
<h2>The next morning</h2>
<p>Morning finds you still lying beside Melisa. Eventually, reluctantly, you both get dressed and prepare to face the day.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Thank you for last night. Dinner too—before you nearly frightened me to death.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You survived. And we're doing this again soon.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I'd like that.<</say>>
[[Say goodbye->Slums]]
<</nobr>><<nobr>>
<h2>Another invitation</h2>
<img class="scene-image" src="media/characters/melisa/melisa.jpg" alt="Melisa">
<p>After training, Melisa catches you before you can leave the ring.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I heard about a secret club here in the Slums. Drinks, dancing, no Protectorate-approved dress code. Come with me on our second date.<</say>>
<div id="melisa-second-date-choice">
<<link "Accept">><<set $melisa.secondDatePending to false>><<goto "Melisa Second Date">><</link>><br>
<<link "Maybe another time">>
<<replace "#melisa-second-date-choice">>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I want to, but not tonight. Can we do it another evening?<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>We can. Tell me when you're ready—the invitation stays open.<</say>>
[[Return->Gym]]
<</replace>>
<</link>>
</div>
<</nobr>><<nobr>>
<<set $melisa.secondDatePending to false>>
<h2>Second date with Melisa</h2>
<p>You meet at Melisa's apartment that evening. The door opens, and for a moment you forget whatever greeting you had prepared.</p>
<img class="scene-image" src="media/characters/melisa/seconddate1.jpg" alt="Melisa dressed for the second date">
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You look sexy as fuck.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I am sexy. The "as fuck" part will have to be tested later.<</say>>
<p>She chuckles at your expression, locks the apartment behind her, and offers you her arm.</p>
[[Leave for the club->Melisa Second Date Walk]]
<</nobr>><<nobr>>
<h2>Through the Slums</h2>
<p>Melisa walks close beside you through the crowded streets, one arm held securely around your back. Every so often her hand slips lower to grab your butt and give it an unapologetic squeeze.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Are you planning to hold me like that the entire way?<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Yes. Is there a problem?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>No. I just wanted to know whether I should pretend to be surprised next time.<</say>>
[[Enter the club->Melisa Second Date Club]]
<</nobr>><<nobr>>
<h2>The secret club</h2>
<img class="scene-image" src="media/characters/melisa/seconddate2.jpg" alt="MC and Melisa having drinks at the club">
<p>The club hides behind an unmarked door and a suspiciously well-dressed bouncer. Inside, music shakes the walls while colored lights sweep across a crowd unconcerned with the district outside. You and Melisa order drinks and relax together before the rhythm finally draws you toward the dance floor.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Finish that drink. I didn't bring you here to spend the whole night sitting down.<</say>>
[[Move to the dance floor->Melisa Second Date Proposition]]
<</nobr>><<nobr>>
<h2>An unwanted invitation</h2>
<img class="scene-image" src="media/characters/melisa/seconddate3.jpg" alt="A man approaching MC and Melisa at the club">
<p>You have barely begun dancing when a man approaches, openly admiring both of you.</p>
<<say "Man" "" "unaffiliated">>You two look incredible. Why don't you come with me to the VIP lounge? I'll make the night worth your time.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Fuck off. Neither of us swings that way, and she's mine tonight.<</say>>
<p>Something about the certainty in Melisa's voice makes your pussy tingle. The man raises his hands, mutters an apology, and disappears back into the crowd.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Yours tonight?<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Do you object?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Not even a little.<</say>>
[[Keep dancing->Melisa Second Date Flash]]
<</nobr>><<nobr>>
<h2>Losing yourself in the music</h2>
<img class="scene-image" src="media/characters/melisa/seconddate4.webp" alt="MC flashing Melisa on the dance floor">
<p>More drinks and relentless music strip away your remaining restraint. Laughing, you lift your top and flash your bare breasts at Melisa in the middle of the dance floor.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>All right. That's my cue. We're changing locations before you give the entire club the show meant for me.<</say>>
[[Follow Melisa outside->Melisa Second Date Alley]]
<</nobr>><<nobr>>
<h2>Behind the club</h2>
<video src="media/characters/melisa/seconddate5.mp4" autoplay loop muted controls playsinline></video>
<p>Melisa leads you behind the building, presses you against the wall, and slips a hand into your panties. Her fingers find your clit and begin rubbing with slow, deliberate confidence.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>This is what you were asking for in there, wasn't it?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Yes... please don't stop.<</say>>
[[Continue->Melisa Second Date Alley Oral]]
<</nobr>><<nobr>>
<video src="media/characters/melisa/seconddate6.mp4" autoplay loop muted controls playsinline></video>
<p>The teasing escalates until Melisa lowers you onto the concrete behind the club and settles between your thighs, unconcerned by the rough ground or the distant pulse of music through the wall.</p>
[[Continue->Melisa Second Date Alley Oral Continued]]
<</nobr>><<nobr>>
<video src="media/characters/melisa/seconddate7.mp4" autoplay loop muted controls playsinline></video>
<p>Her mouth keeps you trembling as she holds you firmly in place. Any fear of being discovered dissolves beneath the relentless pleasure.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Let me hear you. Nobody in that club matters right now.<</say>>
[[Continue->Melisa Second Date Alley Finale]]
<</nobr>><<nobr>>
<video src="media/characters/melisa/seconddate8.mp4" autoplay loop muted controls playsinline></video>
<p>You pull Melisa close and press your bodies together. The two of you move against one another until the tension breaks at the same moment, leaving you breathless and clinging together on the concrete.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Come home with me.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Lead the way.<</say>>
[[Return to Melisa's apartment->Melisa Second Date Overnight]]
<</nobr>><<nobr>>
<h2>Back at Melisa's apartment</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="Melisa's apartment">
<p>Back at her apartment, exhaustion catches up with both of you. You crawl into bed together and fall asleep with your bodies pressed close.</p>
[[Sleep beside Melisa->Melisa Second Date Morning]]
<</nobr>><<nobr>>
<<run setup.advanceMelisaSecondDateMorning()>><<run UIBar.update()>>
<h2>The morning after</h2>
<img class="scene-image" src="media/characters/melisa/seconddatemorning.jpg" alt="Melisa beside MC the next morning">
<p>You wake to find Melisa lying beside you, quietly watching your face. Her usual confidence remains, but there is an unfamiliar vulnerability beneath it.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Good morning.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>G-good morning. I... I've been awake for a while. Thinking.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I don't want to push anything on you. I know I'm usually sure of myself, but this is... different. I-I like you. A lot. And I want what we have to be more frequent—more permanent. So... would you like to be my girlfriend?<</say>>
<<link "Become Melisa's girlfriend">><<run setup.acceptMelisaRelationship()>><<goto "Melisa Girlfriend Morning">><</link>><br>
<<link "Refuse">><<run setup.rejectMelisaRelationship()>><<goto "Melisa Second Date Refusal">><</link>>
<</nobr>><<nobr>>
<h2>Girlfriends</h2>
<img class="scene-image" src="media/characters/melisa/morning1.webp" alt="MC accepting Melisa's relationship">
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Yes. I want to be your girlfriend.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Good. Come here, girlfriend.<</say>>
<p>Melisa's relief becomes a hungry smile as she pulls you into a kiss.</p>
[[Continue->Melisa Girlfriend Morning Continued]]
<</nobr>><<nobr>>
<img class="scene-image" src="media/characters/melisa/morning2.gif" alt="MC and Melisa together in bed">
<p>The goodbye is postponed as kisses deepen and hands roam beneath the sheets.</p>
[[Continue->Melisa Girlfriend Morning Climax]]
<</nobr>><<nobr>>
<img class="scene-image" src="media/characters/melisa/morning3.gif" alt="Melisa pleasuring MC in bed">
<p>Melisa takes control with the same confidence she carries into the ring, drawing every sound and shiver from you until the morning disappears around her touch.</p>
[[Continue->Melisa Girlfriend Morning Finish]]
<</nobr>><<nobr>>
<video src="media/characters/melisa/morning4.mp4" autoplay loop muted controls playsinline></video>
<p>Only after both of you are thoroughly satisfied do you finally manage to get dressed.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Goodbye, girlfriend.<</say>>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>See you soon. And don't think being my girlfriend means I'll go easy on you in the ring.<</say>>
[[Leave Melisa's apartment->Slums]]
<</nobr>><<nobr>>
<h2>A painful answer</h2>
<img class="scene-image" src="media/characters/melisa/decline.webp" alt="Melisa after MC refuses her relationship">
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I'm sorry, Melisa. I care about you, but I don't want us to become girlfriends.<</say>>
<p>Sadness crosses Melisa's face before she looks away.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I understand. I won't pretend that doesn't hurt, but I asked for the truth.<</say>>
<p>You dress in uncomfortable silence and leave her apartment.</p>
[[Return to the Slums->Slums]]
<</nobr>><<nobr>>
<<run setup.resolveMelisaDepartureNote()>>
<h2>A note from Melisa</h2>
<p>When you approach the boxing ring for your usual training, Melisa is nowhere to be found. A folded note with your name on it has been left where she normally waits.</p>
<blockquote>I'm sorry. I thought I could keep training with you and act as though nothing changed, but I can't. I switched gyms. Keep your guard up and take care of yourself. —Melisa</blockquote>
<p>Melisa will no longer be available as a boxing partner.</p>
[[Return->Gym]]
<</nobr>><<nobr>>
<h2>A question after training</h2>
<img class="scene-image" src="media/characters/melisa/melisa.jpg" alt="Melisa">
<<if $melisa.moveOfferPostponed>>
<p>When training ends, Melisa folds her arms and fixes you with the same unyielding stare as before.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I've given you time. Have you reconsidered moving in with me?<</say>>
<<else>>
<p>As the two of you catch your breath after training, Melisa gives you a thoughtful look.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Where do you live, anyway? You've never taken me there.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I rent a room in an apartment here in the Slums. I share the place with some guy named Arthur.<</say>>
<p>Melisa's expression changes instantly.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You live with a man? Has he used you? Hurt you? Done anything to you?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I have to clean the apartment to lower my rent. And... I don't know for sure, but I think Arthur sometimes comes into my room while I'm napping.<</say>>
<p>Anger hardens Melisa's face. Her hands curl into fists at her sides.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Absolutely fucking not. From now on, you live with me. Whether you like it or not.<</say>>
<</if>>
<div id="melisa-move-choice">
<<link "Accept">><<run setup.acceptMelisaMoveIn()>><<goto "Moving In With Melisa">><</link>><br>
<<link "Refuse for now">>
<<run setup.postponeMelisaMoveIn()>>
<<replace "#melisa-move-choice">>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Melisa, no. I can't suddenly move out because you ordered me to. I need more time.<</say>>
<p>Melisa's anger flares hotter, but she forces herself to step back rather than argue over you.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Fine. Not today. But this is not over, and I'm not leaving you in that situation forever.<</say>>
[[Return->Gym]]
<</replace>>
<</link>>
</div>
<</nobr>><<nobr>>
<h2>No time to waste</h2>
<p>The instant you accept, Melisa grabs your hand and storms out of the gym with you in tow. Her pace makes it clear that hesitation is no longer an option.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Take me to that apartment. Now.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>All right. This way.<</say>>
<p>You guide her through the Slums toward the apartment you share with Arthur.</p>
[[Enter the apartment->Moving Out of Arthur's Apartment]]
<</nobr>><<nobr>>
<h2>Packing</h2>
<img class="scene-image" src="media/myroom/myroom.jpg" alt="MC's room in Arthur's apartment">
<p>Melisa enters beside you and surveys the cramped apartment with open disgust. She points toward your room without slowing down.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Pack your things. Everything you need. We're leaving.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I'll be quick.<</say>>
<p>You gather your belongings while Melisa waits in the hall, her anger simmering rather than fading.</p>
[[Finish packing->Melisa Confronts Arthur]]
<</nobr>><<nobr>>
<h2>Arthur's mistake</h2>
<img class="scene-image" src="media/slumshome/hall.jpg" alt="The hall of Arthur's apartment">
<p>Arthur emerges from his room as you carry your packed belongings into the hall.</p>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>What the hell is all this commotion?<</say>>
<p>Melisa answers by driving her fist square into his jaw. Arthur drops hard to the floor before he can even raise his hands. She grabs a fistful of his hair and wrenches his head back.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You stay the fuck away from her. If you touch her, approach her, or even make her feel unsafe again, I will kill you. Do you understand me?<</say>>
<<say "Arthur" "media/characters/arthur.jpg" "arthur">>O-okay! Yes! I understand!<</say>>
<p>The fear in Arthur's voice is unmistakable. He stares up at Melisa without any trace of his usual swagger.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Melisa, I'm ready. I have everything.<</say>>
<p>Melisa releases Arthur's hair, rises, and drives a brutal kick between his legs.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>That was for touching my girlfriend.<</say>>
<p>Arthur yelps and curls around himself. Within moments, the pain overwhelms him and he loses consciousness on the floor. Melisa wraps an arm around you, takes part of your luggage, and leads you out of the apartment without looking back.</p>
[[Leave with Melisa->Melisa Apartment]]
<</nobr>><<nobr>>
<h2>Melisa's apartment</h2>
<img class="scene-image" src="media/locations/melisasapartment/apartment.jpg" alt="Melisa's apartment">
<p>Melisa brings you and your belongings into her apartment. For the first time since arriving in Suns End, you are no longer living beneath Arthur's roof.</p>
<p>The realization finally breaks through the tension holding you together. Your eyes fill with tears as you wrap your arms tightly around Melisa and bury your face against her.</p>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Thank you... You ended my nightmare. I don't know how I can ever repay you.<</say>>
<p>Melisa's anger fades. She holds you close, one hand settling protectively against the back of your head.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>You don't owe me anything. And as long as I'm alive, nobody will ever dare touch you like that again.<</say>>
<p>The long day finally catches up with both of you. Melisa carries your belongings into the bedroom, and you follow her beneath the covers.</p>
[[Go to sleep together->Melisa Move In Night]]
<</nobr>><<nobr>>
<h2>Encounter</h2>
<<if $pendingCombatEncounter>>
<<set _encounterEnemyName to $pendingCombatEncounter>>
<<set _encounterEnemy to setup.getCombatEnemyByName(_encounterEnemyName)>>
<<set _encounterEnemyTheme to setup.getCombatEnemyKey(_encounterEnemy.faction)>>
<p>A hostile <<print _encounterEnemyName>> steps into your path and blocks the narrow street.</p>
<<say _encounterEnemy.name _encounterEnemy.image _encounterEnemyTheme>>Empty your pockets. Now.<</say>>
<<capture _encounterEnemyName>>
<<link "Fight">>
<<set $pendingCombatEncounter to "">>
<<set $pendingCombatEncounterFaction to "">>
<<startFight _encounterEnemyName "" "slums-encounter">>
<</link>><br>
<<link "Hand over">>
<<set _encounterHandover to setup.resolveUnaffiliatedEncounterHandover(_encounterEnemyName)>>
<<if _encounterHandover.ok>><<goto _encounterHandover.destination>><</if>>
<</link>>
<</capture>>
<<else>>
<p class="table-order-error">No encounter has been prepared.</p>
[[Return->Slums]]
<</if>>
<</nobr>><<nobr>>
<<set _encounterEnemy to setup.getCombatDefeatEnemy()>>
<<set _encounterEnemyTheme to setup.getCombatEnemyKey(_encounterEnemy.faction)>>
<<say _encounterEnemy.name _encounterEnemy.image _encounterEnemyTheme>>Nothing? Then I'll collect another way. Maybe you'll even learn to enjoy it.<</say>>
[[Continue->Enemy Sex]]
<</nobr>><<nobr>>
<h2>Protectorate Encounter</h2>
<<if $pendingCombatEncounter>>
<<set _encounterEnemyName to $pendingCombatEncounter>>
<<set _encounterEnemy to setup.getCombatEnemyByName(_encounterEnemyName)>>
<<set _encounterEnemyTheme to setup.getCombatEnemyKey(_encounterEnemy.faction)>>
<p>A <<print _encounterEnemyName>> notices you while patrolling the district and steps directly into your path.</p>
<<say _encounterEnemy.name _encounterEnemy.image _encounterEnemyTheme>>Citizen. Present your identification for inspection.<</say>>
<<capture _encounterEnemyName>>
<<link "Fight">>
<<set $pendingCombatEncounter to "">>
<<set $pendingCombatEncounterFaction to "">>
<<startFight _encounterEnemyName "" "slums-encounter">>
<</link>><br>
[[Hand over->Protectorate ID Check]]
<</capture>>
<<else>>
<p class="table-order-error">No Protectorate encounter has been prepared.</p>
[[Return->Slums]]
<</if>>
<</nobr>><<nobr>>
<<set _encounterEnemyName to $pendingCombatEncounter>>
<<set _encounterEnemy to setup.getCombatEnemyByName(_encounterEnemyName)>>
<<if _encounterEnemy>>
<<set _encounterEnemyTheme to setup.getCombatEnemyKey(_encounterEnemy.faction)>>
<p>You surrender your ID. The <<print _encounterEnemyName>> scans it against Protectorate warrants and the central fines registry.</p>
<<if setup.mustSurrenderToProtectorate()>>
<<say _encounterEnemy.name _encounterEnemy.image _encounterEnemyTheme>>Your citizen record requires immediate detention. Place your hands where I can see them and surrender.<</say>>
<<capture _encounterEnemyName>>
<<link "Fight">>
<<set $pendingCombatEncounter to "">>
<<set $pendingCombatEncounterFaction to "">>
<<startFight _encounterEnemyName "Prison Introduction" "slums-encounter">>
<</link>><br>
<<link "Surrender">>
<<set $pendingCombatEncounter to "">>
<<set $pendingCombatEncounterFaction to "">>
<<goto "Prison Introduction">>
<</link>>
<</capture>>
<<else>>
<p>The scan returns clean. The <<print _encounterEnemyName>> hands your ID back without apology.</p>
<<say _encounterEnemy.name _encounterEnemy.image _encounterEnemyTheme>>Move along, citizen.<</say>>
<<link "Continue">>
<<set $pendingCombatEncounter to "">>
<<set $pendingCombatEncounterFaction to "">>
<<goto setup.getDistrictEncounterReturnPassage()>>
<</link>>
<</if>>
<<else>>
<p class="table-order-error">The encounter record is no longer valid.</p>
<<link "Return">><<goto setup.getDistrictEncounterReturnPassage()>><</link>>
<</if>>
<</nobr>><<nobr>>
<<set _prisonSentence to setup.preparePrisonSentence()>>
<h2>Prison Introduction</h2>
<p>Protectorate officers drag you into a holding cell and leave you under constant surveillance until a Judge is ready to hear your case.</p>
<<if _prisonSentence.days > 0>>
<img class="scene-image" src="media/locations/prison/courtroom.jpg" alt="Protectorate courtroom">
<<say "Judge" "media/locations/prison/judge.jpg" "protectorate">><<if _prisonSentence.wanted && _prisonSentence.fines > 4999>>You stand before this court as a wanted citizen with c<<print _prisonSentence.fines>> in unpaid fines. The sentence is <<print _prisonSentence.days>> days of confinement.<<elseif _prisonSentence.wanted>>You stand before this court as a wanted citizen. The sentence is <<print _prisonSentence.days>> days of confinement.<<else>>Your unpaid fines total c<<print _prisonSentence.fines>>. The sentence is <<print _prisonSentence.days>> days of confinement.<</if>><</say>>
<p>The ruling is entered into your citizen record. Guards return you to restraints and transport you to the district prison to serve the sentence.</p>
[[Continue->Prison]]
<<else>>
<p class="table-order-error">No active charge could be found for sentencing.</p>
[[Return->Slums]]
<</if>>
<</nobr>><<nobr>>
<h2>Prison</h2>
<img class="scene-image" src="media/locations/prison/prison.jpg" alt="Prison cell">
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>I hate this place. I just have to keep my head down and get through the sentence.<</say>>
<<link "Serve sentence">>
<<run setup.servePrisonSentence()>>
<<run UIBar.update()>>
<<goto "Slums">>
<</link>>
<</nobr>><h2>Fight</h2>
<<if $combatEnemy>>
<div id="combat-ui"><<combatUI>></div>
<<else>>
<p class="table-order-error">No combat encounter has been initialized.</p>
[[Return->Slums]]
<</if>><h2>Victory</h2>
<<if $combatOutcome && $combatOutcome.type is "victory">>
<<if $combatOutcome.enemyImage>>
<img class="scene-image" @src="$combatOutcome.enemyImage" @alt="$combatOutcome.enemyName">
<</if>>
<<if setup.isMainQuestArtifactAmbushVictory()>>
<<nobr>>
<p><<print $combatOutcome.enemyName>> collapses beside the hiding place. With the ambush dealt with, nothing stands between you and Irine's prize.</p>
<img class="scene-image" src="media/mainquest/artifact/artifactfragment.jpg" alt="The recovered artifact fragment">
<<say $mcname setup.getMcPortrait() "thought">>Still intact. Irine had better be ready with those credits.<</say>>
<<link "Take and pocket the artifact">>
<<set _artifactRecovery to setup.secureIrineArtifact()>>
<<if _artifactRecovery.ok>><<goto "Slums">><</if>>
<</link>>
<</nobr>>
<<elseif $combatOutcome.contractResolution>>
<<nobr>>
<<set _contractResolution to $combatOutcome.contractResolution>>
<<if _contractResolution.acknowledged>>
<p>This contract has already been completed.</p>
<<link "Continue">><<goto setup.getBarReturnPassage()>><</link>>
<<elseif _contractResolution.witnessed>>
<p>Someone saw you assaulting <<print _contractResolution.targetName>> and notified the authorities.</p>
<p class="table-order-error"><strong>You are now WANTED!</strong></p>
<<link "Continue">>
<<set _contractResolution.acknowledged to true>>
<<if _contractResolution.melisaEncounter && $melisaContractRescue.active>>
<<goto "Melisa Contract Defeat Encounter">>
<<else>>
<<goto '"Vested Interest" Bar'>>
<</if>>
<</link>>
<<elseif _contractResolution.melisaEncounter && $melisaContractRescue.active>>
[[Continue->Melisa Contract Defeat Encounter]]
<<else>>
<<link "Continue">><<goto setup.getBarReturnPassage()>><</link>>
<</if>>
<</nobr>>
<<elseif setup.isMercenaryContractVictory()>>
<<nobr>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Time to finish the job.<</say>>
<<linkreplace "Confirm kill">>
<<set _contractCompletion to setup.completeMercenaryContract()>>
<<if _contractCompletion.ok>>
<<if _contractCompletion.witnessed>>
<<set $isWanted to true>>
<p>Someone saw you assaulting <<print _contractCompletion.contract.targetName>> and notified the authorities.</p>
<p class="table-order-error"><strong>You are now WANTED!</strong></p>
<<link "Continue">>
<<set $combatOutcome.contractResolution.acknowledged to true>>
<<if _contractCompletion.melisaEncounter>>
<<goto "Melisa Contract Defeat Encounter">>
<<else>>
<<goto setup.getBarReturnPassage()>>
<</if>>
<</link>>
<<elseif _contractCompletion.melisaEncounter>>
<<goto "Melisa Contract Defeat Encounter">>
<<else>>
<<goto setup.getBarReturnPassage()>>
<</if>>
<</if>>
<</linkreplace>>
<</nobr>>
<<elseif $combatOutcome.sideQuestResolution>>
<p>The brawl is finished, and the Patron's c<<print $combatOutcome.sideQuestResolution.payment>> payment is yours.</p>
<<if $combatOutcome.sideQuestResolution.witnessed>>
<p>Someone witnessed the assault and reported you to the authorities.</p>
<p class="wanted-status-alert"><strong>You are now WANTED!</strong></p>
<</if>>
[[Continue->Slums]]
<<elseif setup.isSideQuestBrawlVictory()>>
<<set _brawlCompletion to setup.completeSideQuestBrawlVictory()>>
<p>You have beaten your target and completed the Patron's brawl. The Patron's c<<print _brawlCompletion.payment>> payment is yours.</p>
<<if _brawlCompletion.witnessed>>
<p>Someone witnessed the assault and reported you to the authorities.</p>
<p class="wanted-status-alert"><strong>You are now WANTED!</strong></p>
<</if>>
[[Continue->Slums]]
<<else>>
<p><<print $combatOutcome.enemyName>> lies defeated. What do you want to do?</p>
<<nobr>>
<<link "Leave them be">>
<<set _encounterReturnPassage to State.variables.combatContext is "slums-encounter" ? setup.getDistrictEncounterReturnPassage() : "Slums">>
<<run setup.completeCombatVictory(false)>>
<<goto _encounterReturnPassage>>
<</link>><br>
<<link "Steal credits">>
<<set _encounterReturnPassage to State.variables.combatContext is "slums-encounter" ? setup.getDistrictEncounterReturnPassage() : "Slums">>
<<run setup.completeCombatVictory(true)>>
<<goto _encounterReturnPassage>>
<</link>>
<</nobr>>
<</if>>
<<else>>
<p class="table-order-error">There is no completed fight to resolve.</p>
[[Return->Slums]]
<</if>><<nobr>>
<h2>Hospital</h2>
<img class="scene-image" src="media/locations/hospital/hospital.jpg" alt="Hospital room">
<p>The Slums hospital operates beneath harsh lights and stricter billing rules. Treatment is available; mercy is not.</p>
[[Body Part Mods]]<br>
[[Visit the insurance agent]]<br>
[[Return->Slums]]
<</nobr>><<nobr>>
<h2>Body Part Mods</h2>
[[Return->Hospital]]
<p>The hospital's modification clinic offers functional augmentation and cosmetic bio-reconstruction through Protectorate-certified procedures.</p>
<div id="body-part-mods-ui">
<<bodyPartModsUI>>
</div>
<</nobr>><<nobr>>
<<set _functionalSlot to setup.getSelectedFunctionalBodyModSlot()>>
<h2><<print _functionalSlot.label>> Mods</h2>
[[Return->Body Part Mods]]
<p>Only one Functional Mod can occupy this body slot. Installing another replaces the currently installed mod.</p>
<div id="functional-body-mod-slot-ui">
<<functionalBodyModSlotUI _functionalSlot.key>>
</div>
<</nobr>><<nobr>>
<h2>Insurance Agent</h2>
<img class="scene-image" src="media/locations/hospital/insuranceaagent.jpg" alt="Hospital insurance agent">
<p>The agent presents three Protectorate-approved health insurance plans. Coverage begins immediately after payment.</p>
<div id="insurance-purchase-notice"></div>
<div class="insurance-plan-grid">
<<for _insurancePlanKey range ["bronze", "silver", "gold"]>>
<<set _insurancePlan to setup.healthInsurancePlans[_insurancePlanKey]>>
<<capture _insurancePlanKey _insurancePlan>>
<<set _insuranceButtonLabel to "Choose " + _insurancePlan.name>>
<article @class="'insurance-plan-card insurance-plan-card--' + _insurancePlanKey">
<h3><<print _insurancePlan.name>></h3>
<strong>c<<print _insurancePlan.cost>></strong>
<span><<if _insurancePlan.months is 1>>1 month<<elseif _insurancePlan.months is 12>>1 year<<else>><<print _insurancePlan.months>> months<</if>></span>
<<if setup.canAfford(_insurancePlan.cost)>>
<<button _insuranceButtonLabel>>
<<set _insurancePurchase to setup.purchaseHealthInsurance(_insurancePlanKey)>>
<<if _insurancePurchase.ok>><<goto "Hospital">><</if>>
<</button>>
<<else>>
<button type="button" disabled title="Not enough credits">Choose <<print _insurancePlan.name>></button>
<</if>>
</article>
<</capture>>
<</for>>
</div>
[[Return->Hospital]]
<</nobr>><<nobr>>
<<set _hospitalDefeatResult to setup.applyCombatHospitalBill()>>
<<set _hospitalPrisonTransfer to setup.shouldTransferDefeatHospitalToPrison()>>
<h2>Defeat</h2>
<img class="scene-image" src="media/locations/hospital/hospital.jpg" alt="Hospital room">
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Where am I...? Those lights... I'm in a hospital.<</say>>
<p>Emergency responders brought you here after you lost consciousness. The medical staff have treated your injuries and stabilized your condition.</p>
<<if $hasHealthInsurance>>
<p>Your current health insurance plan covers the treatment.</p>
<<else>>
<p>Because you are uninsured, a c1000 treatment charge has been recorded as a debt in your Outstanding Balance.</p>
<</if>>
<<if _hospitalPrisonTransfer>>
<p>A Protectorate guard waits outside your room. The moment the medical staff discharge you, the guard places you in custody.</p>
[[Continue->Prison Introduction]]
<<else>>
[[Continue->Hospital]]
<</if>>
<</nobr>><h2>Defeat</h2>
<p>The final blow sends you to the ground. Sound and light recede as you lose consciousness.</p>
[[Continue->Pleading]]<<nobr>>
<<set _rescueEnemy to setup.getCombatDefeatEnemy()>>
<<set _melisaRescue to setup.completeMelisaCombatRescue()>>
<h2>Saved by Melisa</h2>
<<if _rescueEnemy.image>><img class="scene-image" @src="_rescueEnemy.image" @alt="_rescueEnemy.name + ' after Melisa intervenes'"><</if>>
<p>The <<print _rescueEnemy.name>> looms over your fallen body, ready to decide what happens next. Before they can touch you, Melisa barrels into them from the side.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>Get the fuck away from her! You picked the wrong woman to hurt.<</say>>
<p>Melisa beats the enemy with furious, disciplined precision. Every attempt to rise earns another punch or kick until they collapse and stop fighting back. Only then does she hurry to your side and pull you carefully into her arms.</p>
<<say "Melisa" "media/characters/melisa/melisa.jpg" "melisa">>I've got you, love. They aren't taking anything from you. Not while I'm here.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Melisa...? You came for me.<</say>>
<p>The intervention prevents every consequence the enemy had intended for your defeat.</p>
<<if _melisaRescue.contractCompletion && _melisaRescue.contractCompletion.ok>>
<p>Melisa's intervention also eliminates your assigned target. The contract is marked <strong>Done</strong>, and its c<<print _melisaRescue.contractCompletion.payment>> payment is added to your Outstanding Balance.</p>
<</if>>
<<if _melisaRescue.ok>>[[Leave with Melisa->Slums]]<<else>><p class="table-order-error">The rescue could not be resolved.</p><</if>>
<</nobr>><<nobr>>
<<set _defeatEnemy to setup.getCombatDefeatEnemy()>>
<<set _defeatEnemyTheme to setup.getCombatEnemyKey(_defeatEnemy.faction)>>
<<set _protectorateArrest to setup.getProtectorateArrestStatus()>>
<h2>Pleading</h2>
<p>A sharp blow jolts you awake. The <<print _defeatEnemy.name>> stands over you.</p>
<<if _defeatEnemy.image>>
<img class="scene-image" @src="_defeatEnemy.image" @alt="_defeatEnemy.name">
<</if>>
<<if _defeatEnemyTheme is "protectorate" && _protectorateArrest.shouldArrest>>
<<say _defeatEnemy.name _defeatEnemy.image _defeatEnemyTheme>><<if _protectorateArrest.wanted && _protectorateArrest.excessiveFines>>Your record shows an active warrant and c<<print _protectorateArrest.fines>> in unpaid fines. You are under arrest.<<elseif _protectorateArrest.wanted>>Your citizen record shows an active warrant. You are under arrest.<<else>>Your unpaid fines total c<<print _protectorateArrest.fines>>. You are under arrest.<</if>><</say>>
[[Continue->Prison Introduction]]
<<else>>
<<if _defeatEnemyTheme is "protectorate">>
<<set _protectorateFine to setup.prepareCombatProtectorateFine()>>
<<say _defeatEnemy.name _defeatEnemy.image _defeatEnemyTheme>>Assaulting a Protectorate officer carries an immediate fine of c<<print _protectorateFine.fine>>. It has been added to your citizen record.<</say>>
<<link "Accept the Fine">>
<<run setup.applyCombatProtectorateFine()>>
<<goto setup.getDistrictEncounterReturnPassage()>>
<</link>><br>
<<else>>
<<say _defeatEnemy.name _defeatEnemy.image _defeatEnemyTheme>>Now hand over your credits.<</say>>
<<if $credits > 0>>
<<link "Give them credits">>
<<run setup.payCombatDefeatCredits()>>
<<goto "Slums">>
<</link>><br>
<<elseif setup.getCombatEnemyKey(_defeatEnemy.name) is "civilian">>
<<say _defeatEnemy.name _defeatEnemy.image _defeatEnemyTheme>>Nothing? Fine. The Peacekeepers can deal with you. I'm reporting the assault.<</say>>
<<link "Continue">>
<<run setup.reportCivilianDefeatToAuthorities()>>
<<goto "Prison Introduction">>
<</link>><br>
<<else>>
<<say _defeatEnemy.name _defeatEnemy.image _defeatEnemyTheme>>No credits? Then I'll collect another way. Maybe you'll even learn to enjoy it.<</say>>
<<link "Continue">>
<<run setup.startCombatEnemySex("no-credits")>>
<<goto "Enemy Sex">>
<</link>><br>
<</if>>
<</if>>
<<if $corruption > 0 && !($credits <= 0 && setup.getCombatEnemyKey(_defeatEnemy.name) is "civilian")>>
<<link "Offer something other than money...">>
<<run setup.startCombatEnemySex("offer")>>
<<goto "Enemy Sex">>
<</link>>
<</if>>
<</if>>
<</nobr>><div id="arthur-sex-ui">
<<arthurSexUI>>
</div><<run setup.setBarReturnPassage('"Vested Interest" Bar')>>
<<if setup.shouldTriggerIrineApproach()>><<goto "Irine Approach">><</if>>
<<if !setup.shouldTriggerIrineApproach()>>
<<set _drunkenClientOffer to setup.prepareDrunkenClientOffer()>>
<<if _drunkenClientOffer.triggered>><<goto "Drunken Client Offer">><</if>>
<h2>"Vested Interest" Bar</h2>
<p>The "Vested Interest" is an infamous Slums bar where exhausted workers drink beside mercenaries, criminals, and anyone else with credits to spend. Arguments are common; questions are not.</p>\
<img class="scene-image" src="media/locations/vestedinterest/start.jpg" alt="">
<<nobr>>
<<if !setup.isEmployedAt("vested-interest") && State.hasPlayed("Ask for work")>>
<<run setup.startEmployment("vested-interest", "Dishwasher")>>
<</if>>
<<if setup.isEmployedAt("vested-interest")>>
<<if setup.isMercenaryAtVestedInterest()>>
[[Contracts]]
<<if setup.getActiveMercenaryContract()>><br>
<<if setup.canPerformDayPhaseAction("contract")>>
<<link "Do some mercenary work" "Kill Contract Encounter">><<run setup.advanceDayPhasesForAction("contract")>><</link>>
<<else>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('contract')">Do some mercenary work</span>
<</if>>
<</if>>
<<else>>
<<if setup.hasWorkedToday("vested-interest")>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" data-tooltip="You have already worked today.">Work</span>
<<elseif !setup.canPerformDayPhaseAction("work")>>
<span class="passage-link-disabled passage-link-disabled--tooltip" aria-disabled="true" tabindex="0" @data-tooltip="setup.getDayPhaseActionLockMessage('work')">Work</span>
<<elseif setup.isWaitressAtVestedInterest()>>
[[Work->Waitress Serving]]
<<else>>
[[Work]]
<</if>>
<</if>>
<<else>>
[[Ask for work]]
<</if>><br>
[[Look for some extra work...->Extra Work]]<br>
<<if setup.canMeetIrineAtBar() && !setup.hasWarehouseAccess()>><<link "Meet Irine...">><<goto setup.getIrineMeetingPassage()>><</link>><br><</if>>
[[Sit at the bar]]<br>
[[Outside->Slums]]
<</nobr>>
<</if>><<nobr>>
<p>You ask one of the waitresses whether the Bar needs help. She studies you for a moment, then leads you through a staff door and tells you the manager's name is Bradford.</p>
<p>Inside the office, a man in faded mercenary gear sits behind a scarred desk, smoking a cigar beneath a tired ventilation fan.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>They tell me you're looking for work.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Yes, sir. I just moved to Suns End, and I need something steady enough to keep me here.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>New arrival. Thought so. I don't have glamorous work, but the kitchen always needs another pair of hands. You know how to wash dishes?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Dishwashing. Not exactly the future I crossed half a planet for.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I do. I'm willing to work hard—I just need the chance.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Base pay is c100 a week if you work at least five days. Six days earns c150, and all seven earns c200. Miss the minimum and there is no weekly pay.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Even the full wage barely covers rent. Still, c100 is better than c0, and Bradford does not look interested in bargaining.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>All right. When can I start?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Today, if you want. For your first partial week, I'll pay c40 for each day you work. After that, the normal weekly rate applies. Payday is Monday.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Thank you, sir. I won't let you down.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Do the work and we won't have a problem. And drop the “sir.” Bradford is fine.<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Right. Thank you, Bradford.<</say>>
<p>With the arrangement settled, you leave the office and return to the main floor as an employee of the "Vested Interest."</p>
<<run setup.startEmployment("vested-interest", "Dishwasher")>>
[[Return->"Vested Interest" Bar]]
<</nobr>><<set _workResult to setup.recordWorkDay("vested-interest")>>
<<if _workResult.ok>>
<<set _workEvent to setup.prepareDishwasherWorkplaceEvent()>>
<p>You spend the shift behind the kitchen, scraping plates, hauling racks, and washing an endless supply of glasses. By the time the last load is clean, your hands ache and the Bar is already filling again.</p>
<img class="scene-image" src="media/locations/vestedinterest/work/dishwasher/washing1.webp" alt="">
<<elseif _workResult.reason is "already-worked">>
<p>You have already completed your shift for today.</p>
<<elseif _workResult.reason is "too-late">>
<p class="table-order-error">It is too late to work a full shift today.</p>
<<else>>
<p>You are not employed here.</p>
<</if>>
<<if _workResult.ok>>
[[Continue->Dishwasher Workplace Event]]
<<else>>
[[Return->"Vested Interest" Bar]]
<</if>><<nobr>>
<<set _event to setup.getCurrentDishwasherWorkplaceEvent()>>
<h2>During the shift</h2>
<<if !_event>>
<p>The remainder of your shift passes without incident.</p>
<<elseif _event.id is "life-ships">>
<p>While replacing a rack of glasses, you overhear an old mercenary correcting a younger patron's version of Protectorate history.</p>
<<say "Old Mercenary" "" "unaffiliated">>Four life ships crossed from the old galaxy before the wormhole slammed shut. Only three survived long enough to build anything here. Every city on Arda owes its existence to those ships.<</say>>
<<say "Bar Patron" "" "unaffiliated">>That's the version they teach. Doesn't mean anyone alive knows the whole truth.<</say>>
<<elseif _event.id is "closed-wormhole">>
<p>Two customers lower their voices as you collect their empty plates.</p>
<<say "Dockworker" "" "unaffiliated">>A wormhole that large doesn't simply close the moment four life ships pass through it. Something happened on the other side.<</say>>
<<say "Bar Patron" "" "unaffiliated">>Keep that theory quiet unless you want the Protectorate asking why you doubt the official record.<</say>>
<<elseif _event.id is "missing-fourth">>
<p>A tired spacer watches soap run across the plate in your hands and speaks as if continuing an argument nobody else can hear.</p>
<<say "Spacer" "" "unaffiliated">>Three ships founded the Protectorate. Nobody in this bar can tell you exactly what happened to the fourth. Wrecked, lost—or still drifting somewhere beyond our charts.<</say>>
<p>The spacer offers no evidence, only a shrug, before returning to the drink.</p>
<<elseif _event.id is "arathar-grand-three">>
<p>A nearby conversation turns to Lord-Governor Arathar Trangendin. Even the loudest patrons become more careful with their words.</p>
<<say "Mercenary" "" "unaffiliated">>Calling Trangendin a governor makes him sound ordinary. He's one of the Grand Three—there's only the Emperor above him. Ask yourself why a man like that keeps such a close hold on Suns End.<</say>>
<<say "Bar Patron" "" "unaffiliated">>I'd rather not ask that where walls have ears.<</say>>
<<elseif _event.id is "grey-order">>
<p>You pause beside a table when somebody mentions the Grey Order.</p>
<<say "Bar Patron" "" "unaffiliated">>Trangendin commands the military, governs the city, and serves as Grand Master of the Grey Order. Nobody collects that many titles because they enjoy paperwork.<</say>>
<<say "Mercenary" "" "unaffiliated">>And sensible people don't speculate about the Order in public.<</say>>
<<elseif _event.id is "return-to-stars">>
<p>A group of workers argue over a muted Protectorate broadcast playing above the bar.</p>
<<say "Factory Worker" "" "unaffiliated">>Thousands of years trapped on Arda, then we finally reached the stars again. Now every broadcast calls the next expansion humanity's destiny.<</say>>
<<say "Dockworker" "" "unaffiliated">>Destiny for High Command. Overtime and rationing for the rest of us.<</say>>
<<elseif _event.id is "storage-help">>
<p>Bradford appears in the kitchen doorway and gestures for you to follow him into the storage room.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Delivery came early. I need those supply crates off the floor before the evening crowd arrives. Use your legs, keep your back straight, and tell me if one is too heavy.<</say>>
<p>You help him stack dense crates of bottles and preserved food. By the last one, your arms are trembling, but Bradford gives the finished stack an approving nod.</p>
<<if _event.statChange > 0>><p class="gym-stat-gain"><strong>Strength +<<print _event.statChange>></strong></p><<else>><p class="gym-stat-gain"><strong>Strength is already at its maximum.</strong></p><</if>>
<<elseif _event.id is "falling-dishes">>
<p>A badly balanced tower of clean dishes shifts as you pull the lower rack from the washer.</p>
<<if _event.caughtDishes>>
<p>You lunge forward and catch the stack against your chest. Porcelain rattles between your hands, but not a single plate reaches the floor.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Good catch. Next time, don't stack them like you're building a monument.<</say>>
<<else>>
<p>You reach for the stack too late. Plates strike the floor one after another, filling the kitchen with the sharp crash of breaking porcelain.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Leave the shards. I'll get a broom. Slow down before you cut your hands trying to save a plate.<</say>>
<</if>>
<<if _event.statChange is 0>>
<p class="gym-stat-gain"><strong>Agility cannot change beyond its limit.</strong></p>
<<else>>
<p class="gym-stat-gain"><strong>Agility <<if _event.statChange > 0>>+<</if>><<print _event.statChange>></strong></p>
<</if>>
<<elseif _event.id is "bradford-arrival">>
<p>During a quiet stretch, Bradford rests one shoulder against the kitchen doorway and watches you work.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Still settling into Suns End?<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Trying to. The city is larger, louder, and considerably less welcoming than I imagined.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Keep your eyes open and don't trust every friendly face. Suns End punishes people who assume kindness and weakness are the same thing.<</say>>
<<elseif _event.id is "bradford-bar-rule">>
<p>Bradford helps you clear a sudden flood of glasses, moving with the efficiency of someone who has done every job in the Bar.</p>
<<say $mcname setup.getMcPortrait() "jane">>Do criminals and Protectorate Peacekeepers really drink in here at the same time?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>They do if they behave. Inside my walls, credits buy drinks—not permission to start wars. Anyone who forgets that leaves through the door or the floor.<</say>>
<<elseif _event.id is "bradford-potential">>
<p>Bradford inspects the finished racks, then looks at you rather than the dishes.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You show up, listen, and finish what you start. Those qualities are rarer around here than talent.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>I can't tell whether that was a compliment.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>It was. Don't make me repeat it.<</say>>
<<elseif _event.id is "bradford-tip">>
<p>At the end of the shift, Bradford checks the spotless kitchen and places a small credit chit beside your hand.</p>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You handled more than your share today. Take the extra c50 now; it isn't part of the weekly wage.<</say>>
<<say $mcname setup.getMcPortrait() "jane">>Thank you, Bradford. I could use it.<</say>>
<p class="gym-stat-gain"><strong>Credits +c<<print _event.creditsGained>></strong></p>
<<elseif _event.category is "disposition">>
<p><<print _event.intro>></p>
<<say _event.speaker _event.portrait _event.theme>><<print _event.dialogue>><</say>>
<div id="dishwasher-disposition-choice">
<<if _event.resolved>>
<p><<print _event.choiceResult>></p>
<<if _event.dispositionChange isnot 0>>
<p @class="'gym-stat-gain stat-change-confirmation stat-change-confirmation--disposition stat-change-confirmation--' + (_event.dispositionChange > 0 ? 'increase' : 'decrease')"><strong>Disposition <<if _event.dispositionChange > 0>>+<</if>><<print _event.dispositionChange>></strong></p>
<<elseif _event.intendedDispositionChange isnot 0>>
<p class="gym-stat-gain"><strong>Disposition is already at its limit.</strong></p>
<</if>>
<<link "Continue">><<goto setup.getDishwasherPostShiftDestination()>><</link>>
<<else>>
<<for _dispositionChoice range _event.choices>>
<<set _dispositionChoiceId to _dispositionChoice.id>>
<<set _dispositionChoiceLabel to _dispositionChoice.label>>
<<set _dispositionEventId to _event.id>>
<<capture _dispositionChoiceId _dispositionChoiceLabel _dispositionEventId>>
<<link _dispositionChoiceLabel>>
<<set _dispositionResult to setup.resolveDishwasherDispositionChoice(_dispositionEventId, _dispositionChoiceId)>>
<<if _dispositionResult.ok>>
<<replace "#dishwasher-disposition-choice">>
<p><<print _dispositionResult.choice.result>></p>
<<if _dispositionResult.dispositionChange isnot 0>>
<p @class="'gym-stat-gain stat-change-confirmation stat-change-confirmation--disposition stat-change-confirmation--' + (_dispositionResult.dispositionChange > 0 ? 'increase' : 'decrease')"><strong>Disposition <<if _dispositionResult.dispositionChange > 0>>+<</if>><<print _dispositionResult.dispositionChange>></strong></p>
<<elseif _dispositionResult.intendedChange isnot 0>>
<p class="gym-stat-gain"><strong>Disposition is already at its limit.</strong></p>
<</if>>
<<link "Continue">><<goto setup.getDishwasherPostShiftDestination()>><</link>>
<</replace>>
<</if>>
<</link>><br>
<</capture>>
<</for>>
<</if>>
</div>
<</if>>
<<if !_event || _event.category isnot "disposition">>
<<link "Continue">><<goto setup.getDishwasherPostShiftDestination()>><</link>>
<</if>>
<</nobr>><<nobr>>
<h2>Mercenary Offer</h2>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You've worked enough shifts for me to know you show up, and you've got more backbone than I expected. I could use another mercenary operating out of the Bar. Interested?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You mean you want me handling mercenary work instead of washing dishes?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>That's the offer. No weekly wage—you get paid for contracts you finish, and nothing for contracts you don't. I'll give you a one-time c150 signing bonus to get started.<</say>>
<<link "Accept">>
<<set _mercenaryDecision to setup.resolveMercenaryOffer(true)>>
<<if _mercenaryDecision.ok>><<goto "Mercenary Offer Accepted">><</if>>
<</link>><br>
<<link "Decline">>
<<set _mercenaryDecision to setup.resolveMercenaryOffer(false)>>
<<if _mercenaryDecision.ok>><<goto "Mercenary Offer Declined">><</if>>
<</link>>
<</nobr>><<nobr>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I'll do it. I want the chance to prove I can handle more than a sink full of dishes.<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>Then spend that signing bonus wisely. Stop by the Gear Stall in the Market and buy something better than bare hands before you take a contract.<</say>>
[[Continue->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Thank you for trusting me, but I'm not ready to carry a weapon for money. I'd rather stay in the kitchen.<</say>>
[[Continue->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<h2>Waitress Offer</h2>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>You've put in enough shifts for me to know you're reliable. I could use another waitress on the floor, and you might earn better money out there. Interested?<</say>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>You want me serving customers instead of washing dishes?<</say>>
<<say "Bradford" "media/characters/bradford/bradford.jpg" "bradford">>That's right. Five days pays c200, six pays c250, and all seven earns c300. Whatever the customers leave you in tips is yours.<</say>>
<<link "Accept">>
<<set _waitressDecision to setup.resolveWaitressOffer(true)>>
<<if _waitressDecision.ok>><<goto "Waitress Offer Accepted">><</if>>
<</link>><br>
<<link "Decline">>
<<set _waitressDecision to setup.resolveWaitressOffer(false)>>
<<if _waitressDecision.ok>><<goto "Waitress Offer Declined">><</if>>
<</link>>
<</nobr>><<nobr>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>I'll do it. I think I can handle the customers, and the extra pay would help.<</say>>
[[Continue->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Thank you for offering, but I would rather stay in the kitchen a little longer.<</say>>
[[Continue->"Vested Interest" Bar]]
<</nobr>><<nobr>>
<h2>Waitress Serving</h2>
<<if !setup.isWaitressAtVestedInterest()>>
<p>You are not employed as a waitress here.</p>
[[Return->"Vested Interest" Bar]]
<<elseif setup.hasWorkedToday("vested-interest")>>
<p>You have already completed your shift for today.</p>
[[Return->"Vested Interest" Bar]]
<<else>>
<div id="waitress-serving-options">
<<link "Work normally">>
<<set _waitressResult to setup.completeWaitressShift(false)>>
<<replace "#waitress-serving-options">>
<<if _waitressResult.ok>>
<<set _waitressNormalImages to [
"media/locations/vestedinterest/work/waitress/normalserving/1.jpeg",
"media/locations/vestedinterest/work/waitress/normalserving/2.jpg",
"media/locations/vestedinterest/work/waitress/normalserving/3.jpg",
"media/locations/vestedinterest/work/waitress/normalserving/4.jpg",
"media/locations/vestedinterest/work/waitress/normalserving/5.jpg",
"media/locations/vestedinterest/work/waitress/normalserving/6.jpg",
"media/locations/vestedinterest/work/waitress/normalserving/7.jpg",
"media/locations/vestedinterest/work/waitress/normalserving/8.jpg",
"media/locations/vestedinterest/work/waitress/normalserving/9.jpg",
"media/locations/vestedinterest/work/waitress/normalserving/10.jpg",
"media/locations/vestedinterest/work/waitress/normalserving/11.jpg",
"media/locations/vestedinterest/work/waitress/normalserving/12.jpg"
]>>
<p>You keep the tables supplied, remember the regulars' orders, and steer clear of the worst arguments. By the end of the shift, the customers have left you c<<print _waitressResult.tips>> in tips.</p>
<img class="scene-image" @src="_waitressNormalImages[random(0, _waitressNormalImages.length - 1)]" alt="">
[[Return->"Vested Interest" Bar]]
<<else>>
<p>You could not complete this shift.</p>
[[Return->"Vested Interest" Bar]]
<</if>>
<</replace>>
<</link>>
<<if $dominance <= -20 && $corruption > -70>><br>
<<link "Flirt while working">>
<<set _waitressResult to setup.completeWaitressShift(true)>>
<<replace "#waitress-serving-options">>
<<if _waitressResult.ok>>
<<set _waitressFlirtyImages to [
"media/locations/vestedinterest/work/waitress/flirtyserving/1.gif",
"media/locations/vestedinterest/work/waitress/flirtyserving/2.webp",
"media/locations/vestedinterest/work/waitress/flirtyserving/4.jpg",
"media/locations/vestedinterest/work/waitress/flirtyserving/5.gif"
]>>
<p>You lean into the attention, trading smiles and suggestive remarks for fuller glasses and larger tips. By closing time, the customers have left you c<<print _waitressResult.tips>>.</p>
<img class="scene-image" @src="_waitressFlirtyImages[random(0, _waitressFlirtyImages.length - 1)]" alt="">
<<link "Return">>
<<if setup.rollWaitressClientOffer()>><<goto "Client offer">><<else>><<goto '"Vested Interest" Bar'>><</if>>
<</link>>
<<else>>
<p>You could not complete this shift.</p>
[[Return->"Vested Interest" Bar]]
<</if>>
<</replace>>
<</link>>
<</if>>
</div>
<</if>>
<</nobr>><<nobr>>
<h2>Client Offer</h2>
<img class="scene-image" src="media/locations/vestedinterest/work/waitress/wickedserving/clientproposition.jpg" alt="Client making an offer">
<p>The Client catches your attention and gestures openly toward his crotch.</p>
<<say "Client" "media/locations/vestedinterest/work/waitress/wickedserving/client.jpg" "unaffiliated">>You want another c100? Do something a little more personal for me.<</say>>
<div id="client-offer-choices">
<<if $corruption > -50>>
<<link "Agree">>
<<set _clientScene to setup.startWaitressClientSex()>>
<<if _clientScene.ok>><<goto "Waitress Client Sex">><</if>>
<</link>><br>
<</if>>
<<link "Refuse">>
<<replace "#client-offer-choices">>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>No. Absolutely not.<</say>>
<<link "Continue">><<goto setup.getBarReturnPassage()>><</link>>
<</replace>>
<</link>>
</div>
<</nobr>><div id="arthur-sex-ui">
<<arthurSexUI>>
</div><<nobr>>
<h2>Client Offer</h2>
<<if !$drunkenClientOfferPending>>
<p>The opportunity has passed.</p>
<<link "Continue">><<goto setup.getBarReturnPassage()>><</link>>
<<else>>
<img class="scene-image" src="media/locations/vestedinterest/work/waitress/wickedserving/clientproposition.jpg" alt="Client making an offer">
<p>Through the haze of alcohol, you notice a Client watching you. When he catches your eye, he gestures openly toward his crotch.</p>
<<say "Client" "media/locations/vestedinterest/work/waitress/wickedserving/client.jpg" "unaffiliated">>I have c100 for you if you're willing to make this interesting.<</say>>
<div id="drunken-client-offer-choices">
<<link "Accept">>
<<set _clientScene to setup.startDrunkenClientSex()>>
<<if _clientScene.ok>><<goto "Waitress Client Sex">><</if>>
<</link>>
<<if !$drunkenClientOfferForced>><br>
<<link "Refuse">>
<<run setup.refuseDrunkenClientOffer()>>
<<replace "#drunken-client-offer-choices">>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>No... I've had too much. I should leave.<</say>>
<<link "Continue">><<goto setup.getBarReturnPassage()>><</link>>
<</replace>>
<</link>>
<</if>>
</div>
<</if>>
<</nobr>><h2>Contracts</h2>
<<link "Return">><<goto setup.getBarReturnPassage()>><</link>>
<div id="contracts-ui">
<<contractsUI>>
</div><<nobr>>
<<set _killContract to setup.getActiveMercenaryContract()>>
<<if _killContract>>
<h2>Takeout Contract</h2>
<p>You follow Bradford's leads through alleys, crowded markets, and neglected transit levels until you finally locate <<print _killContract.targetName>>.</p>
<<if _killContract.targetImage>><img class="scene-image" @src="_killContract.targetImage" @alt="_killContract.targetName"><</if>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "jane">>Nothing personal, just work.<</say>>
<p>You draw your <<print setup.getEquippedPlayerCombatItem("weapon").name>> and make your intention clear.</p>
<<say _killContract.targetName _killContract.targetImage "criminal">>Then stop talking and earn your pay.<</say>>
<<capture _killContract>>
<<link "Fight">>
<<startFight _killContract.targetName "" "mercenary-contract" _killContract.id>>
<</link>>
<</capture>>
<<else>>
<p class="table-order-error">You do not have an active Takeout contract.</p>
<<link "Return">><<goto setup.getBarReturnPassage()>><</link>>
<</if>>
<</nobr>><<set _drunkenClientOffer to setup.prepareDrunkenClientOffer()>>
<<if _drunkenClientOffer.triggered>><<goto "Drunken Client Offer">><</if>>
<<if setup.getBarReturnPassage() is "Warehouse">>
<img class="scene-image" src="media/locations/middlecity/warehouse/dancing/bar.jpg" alt="The bar inside the Nightclub">
<<else>>
<img class="scene-image" src="media/locations/vestedinterest/drinks/sitattable.jpg" alt="The bar inside the Vested Interest">
<</if>>
<<nobr>>
<div id="table-order-notice"></div>
<<set _mercenaryDrinkFree to setup.hasMercenaryDrinkBenefit()>>
<<set _tableFoodPrice to setup.getTableOrderPrice("food")>>
<<set _tableDrinkPrice to setup.getTableOrderPrice("drink")>>
<<set _foodOrderLabel to "Order some food — c" + _tableFoodPrice>>
<<link _foodOrderLabel>>
<<if setup.chargeCredits(_tableFoodPrice)>>
<<goto "Order some food">>
<<else>>
<<replace "#table-order-notice">><span class="table-order-error">You do not have enough credits.</span><</replace>>
<</if>>
<</link>><br>
<<set _drinkOrderLabel to _mercenaryDrinkFree ? "Order something to drink — Free" : "Order something to drink — c" + _tableDrinkPrice>>
<<link _drinkOrderLabel>>
<<set _drinkOrder to setup.orderBarDrink(_mercenaryDrinkFree, _tableDrinkPrice)>>
<<if _drinkOrder.ok>>
<<goto "Order something to drink">>
<<else>>
<<replace "#table-order-notice">><span class="table-order-error">You do not have enough credits.</span><</replace>>
<</if>>
<</link>><br>
<<link "Return">><<goto setup.getBarReturnPassage()>><</link>>
<</nobr>><<goto "Sit at the bar">><<nobr>>
<<set _foodImages to [
"media/kitchen/eating/eating1.webp",
"media/kitchen/eating/eating2.webp",
"media/kitchen/eating/eating3.webp",
"media/kitchen/eating/eating4.webp",
"media/kitchen/eating/eating5.webp"
]>>
<<set _foodImage to _foodImages[random(0, _foodImages.length - 1)]>>
<<switch random(1, 3)>>
<<case 1>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>This is actually good. I should stop judging food by the building it comes from.<</say>>
<<case 2>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>It is nice to eat something I did not have to cook or clean up after.<</say>>
<<case 3>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>I should make this last. Little luxuries are going to be rare for a while.<</say>>
<</switch>>
<img class="scene-image" @src="_foodImage" alt="">
[[Return->Sit at the bar]]
<</nobr>><<nobr>>
<<run setup.consumeBarDrink()>><<run UIBar.update()>>
<<set _drinkImages to [
"media/locations/vestedinterest/drinks/1.webp",
"media/locations/vestedinterest/drinks/2.webp",
"media/locations/vestedinterest/drinks/3.webp",
"media/locations/vestedinterest/drinks/4.webp",
"media/locations/vestedinterest/drinks/5.webp"
]>>
<<set _drinkImage to _drinkImages[random(0, _drinkImages.length - 1)]>>
<<switch random(1, 3)>>
<<case 1>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Oh... that is much stronger than it tastes.<</say>>
<<case 2>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>That tastes strange. Not bad—just strange.<</say>>
<<case 3>>
<<say $mcname "media/mc/body/hair/normalblonde.png" "thought">>Slowly. I do not want my first reputation in Suns End to be “the girl who cannot hold a drink.”<</say>>
<</switch>>
<img class="scene-image" @src="_drinkImage" alt="">
[[Return->Sit at the bar]]
<</nobr>><<set _marketEncounter to setup.rollSlumsDistrictEncounter("Market Square")>>
<<if _marketEncounter>>
<<set $pendingCombatEncounter to _marketEncounter.enemyName>>
<<set $pendingCombatEncounterFaction to _marketEncounter.faction>>
<<goto _marketEncounter.passage>>
<</if>>
<p>Market Square is less a square than a maze of patched awnings, crowded stalls, and merchants shouting over the transit lines above.</p>
<img class="scene-image" src="media/locations/marketsquare/marketsquare.jpg" alt="Market Square">
[[Thrift Stall]]
[[Gear Stall]]
[[Outside->Slums]]<h2>Thrift Stall</h2>
[[Outside->Market Square]]
<<set $shopNotice to "">>
<div id="wardrobe-ui">
<div id="clothing-shop-ui">
<<clothingShopUI "slums" "outfits">>
</div>
</div><h2>Gear Stall</h2>
[[Outside->Market Square]]
<div id="gear-stall-ui">
<<gearStallUI "weapon">>
</div><<nobr>>
<<if passage() isnot "Character Info" and passage() isnot "Character Stats" and passage() isnot "Quests" and passage() isnot "Tutorial" and passage() isnot "Support Voluntarily">>
<<set $return to passage()>>
<</if>>
<</nobr>><<run setup.initializeNewStory()>>\
<<switch passage()>>\
<<case "Age Warning">>\
<<case "Start">>\
<<case "Space Port">>\
<<case "Slums Arrival">>\
<<case "Data panel">>\
<<case "Tutorial">>\
<<case "Support Voluntarily">>\
<<default>>
<<nobr>>
<div class="sidebar-character-panel">
<img @class="'sidebar-character-image sidebar-character-image--' + setup.getMcDispositionBand()" @src="setup.getMcPortrait()" data-mc-portrait alt="">
<strong class="sidebar-character-name">$mcname Savino</strong>
<div class="sidebar-status-lines">
<div class="sidebar-date"><span><<print setup.formatGameDate()>></span><span class="sidebar-day-phase"><<print setup.getDayPhaseLabel()>></span></div>
<div>Credits: c$credits</div>
<<switch passage()>>
<<case "Character Data Panel">>
<<case "Look up">>
<<default>>
<div><<print setup.getHousingChargeLabel()>>: c$rentpending</div>
<</switch>>
<div>Situation: $return</div>
</div>
</div>
<<run setup.ensureWardrobeState()>>
<div class="equipment-panel">
<h3>Equipment</h3>
<div class="equipment-grid">
<<for _equipmentCategory range setup.sidebarEquipmentCategories>>
<<capture _equipmentCategory>>
<img
class="equipment-image"
@src="setup.getWornWardrobeImage(_equipmentCategory)"
@alt="setup.wardrobeLabels[_equipmentCategory]"
>
<</capture>>
<</for>>
</div>
<<if $drunkenness > 0>>
<div class="drunkenness-meter">
<div class="drunkenness-meter-label"><span>Drunkenness</span><span>$drunkenness%</span></div>
<div class="drunkenness-meter-track" role="progressbar" aria-label="Drunkenness" aria-valuemin="0" aria-valuemax="100" @aria-valuenow="$drunkenness">
<span class="drunkenness-meter-fill" @style="'width: ' + $drunkenness + '%'"> </span>
</div>
</div>
<</if>>
</div>
<<set _dominanceValue to Math.max(-100, Math.min(100, Number($dominance) || 0))>>
<div class="character-trait-panel">
<h3>Disposition</h3>
<div class="character-trait-labels">
<span>Submissive</span>
<span>Dominant</span>
</div>
<div class="character-trait-bar" role="progressbar" aria-label="Dominance" aria-valuemin="-100" aria-valuemax="100" @aria-valuenow="_dominanceValue">
<span class="character-trait-half character-trait-half--submissive">
<span class="character-trait-fill character-trait-fill--submissive" @style="'width: ' + Math.max(0, -_dominanceValue) + '%'"></span>
</span>
<span class="character-trait-half character-trait-half--dominant">
<span class="character-trait-fill character-trait-fill--dominant" @style="'width: ' + Math.max(0, _dominanceValue) + '%'"></span>
</span>
<span class="character-trait-centre"></span>
</div>
</div>
<<set _corruptionValue to Math.max(-100, Math.min(100, Number($corruption) || 0))>>
<div class="character-trait-panel character-trait-panel--corruption">
<h3>Corruption</h3>
<div class="character-trait-labels">
<span>Pure</span>
<span>Wicked</span>
</div>
<div class="character-trait-bar" role="progressbar" aria-label="Corruption" aria-valuemin="-100" aria-valuemax="100" @aria-valuenow="_corruptionValue">
<span class="character-trait-half character-trait-half--submissive">
<span class="character-trait-fill character-trait-fill--pure" @style="'width: ' + Math.max(0, -_corruptionValue) + '%'"></span>
</span>
<span class="character-trait-half character-trait-half--dominant">
<span class="character-trait-fill character-trait-fill--wicked" @style="'width: ' + Math.max(0, _corruptionValue) + '%'"></span>
</span>
<span class="character-trait-centre"></span>
</div>
</div>
<div class="sidebar-actions">
<<button "Character Info">><<goto "Character Info">><</button>>
<<button "Character Stats">><<goto "Character Stats">><</button>>
<<button "Quests">><<goto "Quests">><</button>>
<<button "Tutorial">><<goto "Tutorial">><</button>>
</div>
<</nobr>>
<</switch>>\[[Support Voluntarily]]<h2>Support Voluntarily</h2>
<<nobr>>
<div class="voluntary-support-layout">
<div class="voluntary-support-copy">
<p>Thank you for checking out this page! ✨</p>
<p>I am very grateful that you checked out my free game that I develop in my free time. I already support myself from real life work, but if you would like to drop in to my Fansly and give me a voluntary follow, tip or subscription, that would be amazing. I will also look there for the feedback, requests for putting something new in the game, or change how certain thing works.</p>
<p>This game will always be free as it is my free time filler.</p>
<p>All of the subscriptions and tips will go to my sweet black cat Luna 🐈⬛ to upgrade her already prestigious lifestyle 😽.</p>
<div class="voluntary-support">
<a class="voluntary-support-button" href="https://fansly.com/Lero44/t1" target="_blank" rel="noopener noreferrer">Visit my Fansly</a>
</div>
</div>
<figure class="voluntary-support-portrait">
<img src="media/other/luna.jpg" alt="Luna, the developer's black cat">
</figure>
</div>
<div class="character-info-return">
<<link "Return">><<goto $return>><</link>>
</div>
<</nobr>><<widget "arthurSexLockedButton">>
<<set _arthurSexRestriction to _args.length > 1 ? setup.getArthurSexPathRestriction(_args[1]) : null>>
<<if _arthurSexRestriction>>
<span class="arthur-sex-locked arthur-sex-locked--body" @data-tooltip="_arthurSexRestriction.message" tabindex="0">
<button type="button" disabled><<print _args[0]>></button>
</span>
<<elseif $arthurSexRole is "top">>
<span class="arthur-sex-locked arthur-sex-locked--submissive" data-tooltip="You are not submissive enough." tabindex="0">
<button type="button" disabled><<print _args[0]>></button>
</span>
<<else>>
<span class="arthur-sex-locked arthur-sex-locked--dominant" data-tooltip="You are not dominant enough." tabindex="0">
<button type="button" disabled><<print _args[0]>></button>
</span>
<</if>>
<</widget>>
<<widget "arthurSexUI">>
<<set _path to $arthurSexPath>>
<<set _media to setup.getCurrentArthurSexMedia()>>
<<set _children to setup.getArthurSexChildSegments(_path)>>
<div @class="'arthur-sex-interface arthur-sex-interface--' + $sexSceneContext">
<<if $arthurSexStarted>>
<h3>Choose Action</h3>
<div class="arthur-sex-actions arthur-sex-main-actions">
<<for _category range setup.getArthurSexCategories()>>
<<capture _category>>
<<if setup.isArthurSexPathAvailable([_category])>>
<<button setup.getArthurSexLabel(_category)>>
<<run setup.enterArthurSexCategory(_category)>>
<<replace "#arthur-sex-ui">>
<<arthurSexUI>>
<</replace>>
<</button>>
<<else>>
<<arthurSexLockedButton setup.getArthurSexLabel(_category) _category>>
<</if>>
<</capture>>
<</for>>
</div>
<</if>>
<<if _path.length>><h3 class="arthur-sex-path"><<print setup.getArthurSexPathLabel()>></h3><</if>>
<<if _media>>
<div class="arthur-sex-media-frame">
<<if _media.type is "image">>
<img class="arthur-sex-media" @src="_media.file" alt="">
<<else>>
<video class="arthur-sex-media" @src="_media.file" autoplay playsinline loop controls muted></video>
<</if>>
<div id="arthur-sex-speech" class="arthur-sex-speech" aria-live="off">
<img class="arthur-sex-speech-portrait" src="" alt="">
<span class="arthur-sex-speech-body">
<strong class="arthur-sex-speech-name"></strong>
<span class="arthur-sex-speech-text"></span>
</span>
</div>
</div>
<</if>>
<<if _children.length > 0 && _path.length > 0>>
<h4><<if _path[0] is "intro">>Choose Position<<else>>Options<</if>></h4>
<div class="arthur-sex-actions arthur-sex-sub-actions">
<<for _segment range _children>>
<<capture _segment>>
<<if setup.isArthurSexPathAvailable(_path.concat([_segment]))>>
<<button setup.getArthurSexLabel(_segment)>>
<<run setup.enterArthurSexChild(_segment)>>
<<replace "#arthur-sex-ui">>
<<arthurSexUI>>
<</replace>>
<</button>>
<<else>>
<<arthurSexLockedButton setup.getArthurSexLabel(_segment) _path.concat([_segment])>>
<</if>>
<</capture>>
<</for>>
</div>
<</if>>
<div class="arthur-sex-controls">
<<if _media>>
<<button "Another">>
<<run setup.replayArthurSexMedia()>>
<<replace "#arthur-sex-ui">>
<<arthurSexUI>>
<</replace>>
<</button>>
<</if>>
<<if _path.length > 1 && _path[0] isnot "intro">>
<<button "Back">>
<<run setup.backArthurSexPath()>>
<<replace "#arthur-sex-ui">>
<<arthurSexUI>>
<</replace>>
<</button>>
<</if>>
<<if $arthurSexOrgasm>>
<<if $sexSceneContext is "client">>
<span class="arthur-sex-finish"><<link "Finish" $sexSceneReturnPassage>><<run setup.completeWaitressClientSex()>><</link>></span>
<<elseif $sexSceneContext is "bradford">>
<span class="arthur-sex-finish"><<link "Finish" $sexSceneReturnPassage>><</link>></span>
<<elseif $sexSceneContext is "enemy">>
<span class="arthur-sex-finish"><<link "Finish" $sexSceneReturnPassage>><</link>></span>
<<else>>
<span class="arthur-sex-finish"><<link "Finish" "Talk to Arthur">><<run setup.adjustCorruption(3)>><</link>></span>
<</if>>
<</if>>
</div>
</div>
<<if _media>>
<<run setup.queueArthurSexSpeech()>>
<<else>>
<<run setup.clearArthurSexSpeech()>>
<</if>>
<</widget>><<widget "bodyPartModsUI">>
<<run setup.ensureBodyPartModsState()>>
<<set _bodyModCategory to _args.length && _args[0] is "cosmetic" ? "cosmetic" : "functional">>
<div class="body-mod-interface">
<nav class="body-mod-tabs" aria-label="Body Part Mod categories">
<<if _bodyModCategory is "functional">>
<button type="button" class="is-active" disabled>Functional Mods</button>
<<else>>
<<button "Functional Mods">><<replace "#body-part-mods-ui">><<bodyPartModsUI "functional">><</replace>><</button>>
<</if>>
<<if _bodyModCategory is "cosmetic">>
<button type="button" class="is-active" disabled>Cosmetic Mods</button>
<<else>>
<<button "Cosmetic Mods">><<replace "#body-part-mods-ui">><<bodyPartModsUI "cosmetic">><</replace>><</button>>
<</if>>
</nav>
<div class="body-mod-list">
<<if _bodyModCategory is "functional">>
<p class="body-mod-chart-instruction">Select a highlighted body section to inspect its available Functional Mods.</p>
<div class="body-mod-chart" aria-label="Functional Body Mod slots">
<img src="media/mc/body/bodymods/bodychart.png" alt="Body chart divided into Functional Mod slots">
<<for _functionalSlot range setup.functionalBodyModSlots>>
<<capture _functionalSlot>>
<span @class="'body-mod-hotspot body-mod-hotspot--' + _functionalSlot.key"
@style="setup.getFunctionalBodyModHotspotStyle(_functionalSlot.key)"
@data-label="_functionalSlot.label">
<<link _functionalSlot.label>>
<<run setup.selectFunctionalBodyModSlot(_functionalSlot.key)>>
<<goto "Functional Body Mod Slot">>
<</link>>
</span>
<</capture>>
<</for>>
</div>
<<else>>
<<for _cosmeticMod range setup.cosmeticBodyModDefinitions>>
<<capture _cosmeticMod>>
<<set _cosmeticCooldown to setup.getCosmeticBodyModCooldown(_cosmeticMod.key)>>
<<set _cosmeticCooldownMessage to setup.getCosmeticBodyModCooldownMessage(_cosmeticMod.key)>>
<article class="body-mod-card body-mod-card--cosmetic">
<div class="body-mod-card-details">
<strong><<print _cosmeticMod.label>></strong>
<small><<print _cosmeticMod.description>></small>
<span>Current: <b><<print $bodyPartMods.cosmetics[_cosmeticMod.key]>></b><<if _cosmeticCooldown.active>><br><em><<print _cosmeticCooldown.daysRemaining>> day<<if _cosmeticCooldown.daysRemaining isnot 1>>s<</if>> recovery</em><</if>></span>
</div>
<div class="body-mod-options">
<<for _cosmeticOption range _cosmeticMod.options>>
<<capture _cosmeticMod _cosmeticOption>>
<<set _cosmeticPreviewImage to setup.getCosmeticBodyModPreviewImage(_cosmeticMod.key, _cosmeticOption)>>
<<set _cosmeticCost to setup.getCosmeticBodyModCost(_cosmeticMod.key, _cosmeticOption)>>
<<set _cosmeticOptionLabel to _cosmeticOption + " — c" + _cosmeticCost>>
<span class="npc-preview body-mod-option-preview">
<<if $bodyPartMods.cosmetics[_cosmeticMod.key] is _cosmeticOption>>
<button type="button" class="is-active" disabled><<print _cosmeticOptionLabel>></button>
<<elseif _cosmeticCooldown.active>>
<span class="passage-link-disabled--tooltip" @data-tooltip="_cosmeticCooldownMessage" @aria-label="_cosmeticCooldownMessage" tabindex="0">
<button type="button" disabled aria-hidden="true"><<print _cosmeticOptionLabel>></button>
</span>
<<elseif !setup.canAfford(_cosmeticCost)>>
<span class="passage-link-disabled--tooltip" data-tooltip="Not enough credits." aria-label="Not enough credits." tabindex="0">
<button type="button" disabled aria-hidden="true"><<print _cosmeticOptionLabel>></button>
</span>
<<else>>
<<button _cosmeticOptionLabel>>
<<run setup.purchaseCosmeticBodyMod(_cosmeticMod.key, _cosmeticOption)>>
<<run UIBar.update()>>
<<replace "#body-part-mods-ui">><<bodyPartModsUI "cosmetic">><</replace>>
<</button>>
<</if>>
<<if _cosmeticPreviewImage>>
<span class="npc-preview-card body-mod-preview-card" aria-hidden="true">
<img @src="_cosmeticPreviewImage" @alt="_cosmeticMod.label + ': ' + _cosmeticOption">
</span>
<</if>>
</span>
<</capture>>
<</for>>
</div>
</article>
<</capture>>
<</for>>
<</if>>
</div>
</div>
<</widget>>
<<widget "functionalBodyModSlotUI">>
<<set _functionalSlot to setup.getFunctionalBodyModSlot(_args[0])>>
<<if _functionalSlot>>
<<set _functionalSlotMods to setup.getFunctionalBodyModsForSlot(_functionalSlot.key)>>
<div class="body-mod-interface body-mod-interface--slot">
<<if _functionalSlotMods.length>>
<div class="body-mod-table-wrap">
<table class="body-mod-table">
<thead><tr><th>Mod name</th><th>Type</th><th>Stat change</th><th>Cost</th><th>Status</th></tr></thead>
<tbody>
<<for _functionalMod range _functionalSlotMods>>
<<capture _functionalMod _functionalSlot>>
<<set _functionalInstalled to setup.isFunctionalBodyModInstalled(_functionalMod.id)>>
<tr @class="_functionalInstalled ? 'is-installed' : ''">
<th scope="row"><<print _functionalMod.name>></th>
<td class="body-mod-type"><<print setup.getFunctionalBodyModActivationType(_functionalMod).toUpperFirst()>></td>
<td class="body-mod-stat-change"><<print setup.formatFunctionalBodyModStatChange(_functionalMod)>></td>
<td class="body-mod-cost">c<<print Math.max(0, Math.trunc(Number(_functionalMod.cost) || 0))>></td>
<td>
<<if _functionalInstalled>>
<button type="button" disabled>Installed</button>
<<elseif !setup.canAfford(Math.max(0, Math.trunc(Number(_functionalMod.cost) || 0)))>>
<button type="button" disabled title="Not enough credits">Buy & install</button>
<<else>>
<<button "Buy & install">>
<<run setup.purchaseFunctionalBodyMod(_functionalMod.id)>>
<<replace "#functional-body-mod-slot-ui">><<functionalBodyModSlotUI _functionalSlot.key>><</replace>>
<</button>>
<</if>>
</td>
</tr>
<</capture>>
<</for>>
</tbody>
</table>
</div>
<<else>>
<div class="body-mod-empty">
<strong>No <<print _functionalSlot.label>> mods are currently available.</strong>
<span>Future bio-augmentations for this body slot will appear here.</span>
</div>
<</if>>
</div>
<<else>>
<p class="table-order-error">That body slot is unavailable.</p>
<</if>>
<</widget>><<widget "cheatControls">>
<div id="cheat-controls" class="cheat-controls">
<div class="cheat-control-row">
<span>
<strong>Credits</strong>
<small>c<<print $credits>></small>
</span>
<span class="cheat-control-buttons">
<<button "0">>
<<run setup.setCredits(0)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
<<button "+100">>
<<run setup.addCredits(100)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
<<button "+1000">>
<<run setup.addCredits(1000)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
</span>
</div>
<div class="cheat-control-row">
<span>
<strong>Corruption</strong>
<small><<print $corruption>></small>
</span>
<span class="cheat-control-buttons">
<<button "−10">>
<<run setup.adjustCorruption(-10)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
<<button "+10">>
<<run setup.adjustCorruption(10)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
</span>
</div>
<div class="cheat-control-row">
<span>
<strong>Disposition</strong>
<small><<print $dominance>></small>
</span>
<span class="cheat-control-buttons">
<<button "−10">>
<<run setup.adjustDominance(-10)>>
<<run UIBar.update()>>
<<run setup.refreshMcPortraits()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
<<button "+10">>
<<run setup.adjustDominance(10)>>
<<run UIBar.update()>>
<<run setup.refreshMcPortraits()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
</span>
</div>
<div class="cheat-control-row">
<span>
<strong>Strength</strong>
<small><<print $strength>></small>
</span>
<span class="cheat-control-buttons">
<<button "−10">>
<<run setup.adjustStrength(-10)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
<<button "+10">>
<<run setup.adjustStrength(10)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
</span>
</div>
<div class="cheat-control-row">
<span>
<strong>Constitution</strong>
<small><<print $constitution>></small>
</span>
<span class="cheat-control-buttons">
<<button "−10">>
<<run setup.adjustConstitution(-10)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
<<button "+10">>
<<run setup.adjustConstitution(10)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
</span>
</div>
<div class="cheat-control-row">
<span>
<strong>Agility</strong>
<small><<print $agility>></small>
</span>
<span class="cheat-control-buttons">
<<button "−10">>
<<run setup.adjustAgility(-10)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
<<button "+10">>
<<run setup.adjustAgility(10)>>
<<run UIBar.update()>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
</span>
</div>
<div class="cheat-control-row">
<span>
<strong>Melisa Relationship</strong>
<small><<print setup.ensureMelisaState().relationship>></small>
</span>
<<button "+1">>
<<run setup.adjustMelisaRelationship(1)>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
</div>
<div class="cheat-control-row">
<span>
<strong>Bradford Relationship</strong>
<small><<print setup.ensureBradfordState().relationship>></small>
</span>
<<button "+1">>
<<run setup.adjustBradfordRelationship(1)>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
</div>
<div class="cheat-control-row">
<span>
<strong>Fines</strong>
<small>c<<print $fines>></small>
</span>
<span class="cheat-control-buttons">
<<button "−100">>
<<run setup.addFine(-100)>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
<<button "+100">>
<<run setup.addFine(100)>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
</span>
</div>
<div class="cheat-control-row">
<span>
<strong>Outstanding Balance</strong>
<small>c<<print $outstandingBalance>></small>
</span>
<span class="cheat-control-buttons">
<<button "−100">>
<<run setup.adjustOutstandingBalance(-100)>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
<<button "+100">>
<<run setup.adjustOutstandingBalance(100)>>
<<replace "#cheat-controls">><<cheatControls>><</replace>>
<</button>>
</span>
</div>
</div>
<</widget>>/% Start an encounter from any passage with: <<startFight "Enemy Name">> %/
<<widget "startFight">>
<<set _fightEnemyName to _args.length ? String(_args[0]).trim() : "">>
<<if !_fightEnemyName>>
<p class="table-order-error">The startFight command requires an enemy name.</p>
<<else>>
<<set _fightDefeatDestination to _args.length > 1 ? String(_args[1]).trim() : "">>
<<set _fightContext to _args.length > 2 ? String(_args[2]).trim() : "">>
<<set _fightContractId to _args.length > 3 ? String(_args[3]).trim() : "">>
<<set _fightEnemy to setup.startCombatEncounter(_fightEnemyName, _fightDefeatDestination, _fightContext, _fightContractId)>>
<<if _fightEnemy>>
<<goto "Fight">>
<<else>>
<p class="table-order-error">Enemy "<<print _fightEnemyName>>" could not be found in the enemy table.</p>
<</if>>
<</if>>
<</widget>>
<<widget "combatUI">>
<<run setup.ensurePlayerCombatEquipmentState()>>
<<set _combatEnemyName to _args.length && _args[0] ? _args[0] : ($combatEnemy && $combatEnemy.name ? $combatEnemy.name : "Enemy")>>
<<set _combatEnemyImage to _args.length > 1 && _args[1] ? _args[1] : ($combatEnemy && $combatEnemy.image ? $combatEnemy.image : "")>>
<<set _combatEnemyFaction to $combatEnemy && $combatEnemy.faction ? $combatEnemy.faction : "Unaffiliated">>
<<set _combatEnemyTheme to setup.getCombatEnemyKey(_combatEnemyFaction)>>
<<set _combatEnemyWeapon to $combatEnemy && $combatEnemy.weapon ? $combatEnemy.weapon : null>>
<<set _combatEnemyArmor to $combatEnemy && $combatEnemy.armor ? $combatEnemy.armor : null>>
<<set _combatMcWeapon to setup.getCombatActorWeapon("mc")>>
<<set _combatMcArmor to setup.getEquippedPlayerCombatItem("armor")>>
<<set _combatMcStatus to setup.getCombatantStatus("mc")>>
<<set _combatEnemyStatus to setup.getCombatantStatus("enemy")>>
<<run setup.ensureCombatTurnOrder()>>
<div @class="'combat-interface combat-interface--' + _combatEnemyTheme" aria-label="Combat interface">
<header class="combat-turn-order">
<span class="combat-section-label">Turn order</span>
<div class="combat-turn-track" aria-label="Current turn order">
<<for _combatTurnIndex = 0; _combatTurnIndex < $combatTurnQueue.length; _combatTurnIndex++>>
<<set _combatTurnActor to $combatTurnQueue[_combatTurnIndex]>>
<<set _combatTurnName to _combatTurnActor is "mc" ? $mcname : _combatEnemyName>>
<<set _combatTurnImage to _combatTurnActor is "mc" ? setup.getMcPortrait() : _combatEnemyImage>>
<div @class="'combat-turn-card combat-turn-card--' + _combatTurnActor + (_combatTurnIndex === 0 ? ' is-current' : '')" @aria-label="(_combatTurnIndex === 0 ? 'Current turn: ' : 'Upcoming turn: ') + _combatTurnName" @title="_combatTurnName">
<<if _combatTurnImage>>
<img @src="_combatTurnImage" @alt="_combatTurnName">
<<else>>
<span class="combat-turn-card-placeholder" aria-hidden="true">?</span>
<</if>>
<<if _combatTurnIndex === 0>><span class="combat-turn-current">Now</span><</if>>
</div>
<</for>>
</div>
</header>
<section class="combat-nameplate combat-nameplate--mc">
<span class="combat-side-marker">Player</span>
<strong><<print $mcname>></strong>
</section>
<section @class="'combat-nameplate combat-nameplate--enemy' + (_combatEnemyName.length > 24 ? ' combat-nameplate--very-long-name' : (_combatEnemyName.length > 15 ? ' combat-nameplate--long-name' : ''))">
<span class="combat-side-marker">Opponent</span>
<span class="combat-nameplate-identity">
<strong><<print _combatEnemyName>></strong>
<small><<print _combatEnemyFaction>></small>
</span>
</section>
<section class="combat-portrait-panel combat-portrait-panel--mc" aria-label="Main character">
<img class="combat-portrait" @src="setup.getMcPortrait()" @alt="$mcname">
<<if $combatSpeech && $combatSpeech.actor is "mc">>
<div class="combat-speech combat-speech--mc" role="status">
<img @src="$combatSpeech.portrait" @alt="$combatSpeech.name">
<span><strong><<print $combatSpeech.name>></strong><q><<print $combatSpeech.text>></q></span>
</div>
<</if>>
</section>
<section class="combat-log" aria-label="Battle log" aria-live="polite">
<div class="combat-log-heading">
<strong>Battle Log</strong>
<span>Turn <<print $combatTurnNumber>></span>
</div>
<ol class="combat-log-entries">
<<for _combatLogEntry range $combatLog>>
<li @value="_combatLogEntry.turn"><span><<print _combatLogEntry.label>></span> <<print _combatLogEntry.text>></li>
<</for>>
</ol>
</section>
<section class="combat-portrait-panel combat-portrait-panel--enemy" aria-label="Enemy">
<<if _combatEnemyImage>>
<img class="combat-portrait combat-portrait--enemy" @src="_combatEnemyImage" @alt="_combatEnemyName">
<<else>>
<div class="combat-enemy-placeholder" aria-hidden="true">
<span>?</span>
<small>Enemy image</small>
</div>
<</if>>
<<if $combatSpeech && $combatSpeech.actor is "enemy">>
<div @class="'combat-speech combat-speech--enemy combat-speech--' + _combatEnemyTheme" role="status">
<<if $combatSpeech.portrait>><img @src="$combatSpeech.portrait" @alt="$combatSpeech.name"><</if>>
<span><strong><<print $combatSpeech.name>></strong><q><<print $combatSpeech.text>></q></span>
</div>
<</if>>
</section>
<section class="combat-vitals combat-vitals--mc" aria-label="Main character status">
<div class="combat-vital-row">
<span>Health</span>
<div class="combat-vital-bar" role="progressbar" aria-label="Main character health" aria-valuemin="0" @aria-valuemax="_combatMcStatus.maxHealth" @aria-valuenow="_combatMcStatus.health">
<span class="combat-vital-fill combat-vital-fill--health" @style="'width: ' + (_combatMcStatus.health / _combatMcStatus.maxHealth * 100) + '%'" ></span>
</div>
<strong><<print _combatMcStatus.health>> / <<print _combatMcStatus.maxHealth>></strong>
</div>
<div class="combat-vital-row">
<span>Stamina</span>
<div class="combat-vital-bar" role="progressbar" aria-label="Main character stamina" aria-valuemin="0" @aria-valuemax="_combatMcStatus.maxStamina" @aria-valuenow="_combatMcStatus.stamina">
<span class="combat-vital-fill combat-vital-fill--stamina" @style="'width: ' + (_combatMcStatus.stamina / _combatMcStatus.maxStamina * 100) + '%'" ></span>
</div>
<strong><<print _combatMcStatus.stamina>> / <<print _combatMcStatus.maxStamina>></strong>
</div>
</section>
<section class="combat-vitals combat-vitals--enemy" aria-label="Enemy status">
<div class="combat-vital-row">
<span>Health</span>
<div class="combat-vital-bar" role="progressbar" aria-label="Enemy health" aria-valuemin="0" @aria-valuemax="_combatEnemyStatus.maxHealth" @aria-valuenow="_combatEnemyStatus.health">
<span class="combat-vital-fill combat-vital-fill--health" @style="'width: ' + (_combatEnemyStatus.health / _combatEnemyStatus.maxHealth * 100) + '%'" ></span>
</div>
<strong><<print _combatEnemyStatus.health>> / <<print _combatEnemyStatus.maxHealth>></strong>
</div>
<div class="combat-vital-row">
<span>Stamina</span>
<div class="combat-vital-bar" role="progressbar" aria-label="Enemy stamina" aria-valuemin="0" @aria-valuemax="_combatEnemyStatus.maxStamina" @aria-valuenow="_combatEnemyStatus.stamina">
<span class="combat-vital-fill combat-vital-fill--stamina" @style="'width: ' + (_combatEnemyStatus.stamina / _combatEnemyStatus.maxStamina * 100) + '%'" ></span>
</div>
<strong><<print _combatEnemyStatus.stamina>> / <<print _combatEnemyStatus.maxStamina>></strong>
</div>
</section>
<section class="combat-equipment combat-equipment--mc" aria-label="Main character equipment">
<div><span>Weapon</span><strong><<if _combatMcWeapon>><<print _combatMcWeapon.name>><<else>>Fists<</if>></strong></div>
<div><span>Ammo</span><strong><<print setup.getVisibleCombatAmmoLabel("mc")>></strong></div>
<div><span>Armor</span><strong><<if _combatMcArmor>><<print _combatMcArmor.name>><<else>>None<</if>></strong></div>
</section>
<section class="combat-actions" aria-label="Combat actions">
<<capture _combatEnemyName _combatEnemyImage>>
<<if $combatOutcome>>
<button type="button" disabled>Fight Over</button>
<button type="button" disabled>Defend</button>
<button type="button" disabled>Rest</button>
<button type="button" disabled>Use Item</button>
<button type="button" disabled>Use Body Mod</button>
<button type="button" disabled>Try to Escape</button>
<<elseif setup.getCurrentCombatActor() is "mc" && _combatMcStatus.stunnedTurns > 0>>
<button type="button" disabled>Stunned</button>
<<elseif setup.getCurrentCombatActor() is "mc">>
<<set _combatMcMagazine to setup.getCombatMagazine("mc")>>
<<if _combatMcMagazine && _combatMcMagazine.current <= 0>>
<<button "Reload">>
<<set _combatActionResult to setup.reloadCombatWeapon("mc")>>
<<replace "#combat-ui">><<combatUI _combatEnemyName _combatEnemyImage>><</replace>>
<</button>>
<<else>>
<<button "Attack">>
<<set _combatActionResult to setup.performCombatAttack("mc")>>
<<replace "#combat-ui">><<combatUI _combatEnemyName _combatEnemyImage>><</replace>>
<</button>>
<</if>>
<<else>>
<button type="button" disabled>Enemy Turn</button>
<</if>>
<<if !$combatOutcome && setup.getCurrentCombatActor() is "mc" && _combatMcStatus.stunnedTurns <= 0>>
<<if _combatMcStatus.stamina >= 25>>
<<button "Defend">>
<<run setup.performCombatDefend("mc")>>
<<replace "#combat-ui">><<combatUI _combatEnemyName _combatEnemyImage>><</replace>>
<</button>>
<<else>>
<button type="button" disabled title="Not enough stamina">Defend</button>
<</if>>
<<button "Rest">>
<<run setup.performCombatRest("mc")>>
<<replace "#combat-ui">><<combatUI _combatEnemyName _combatEnemyImage>><</replace>>
<</button>>
<<button "Use Item">>
<<replace "#combat-body-mod-menu">><</replace>>
<<replace "#combat-item-menu">>
<strong>Combat Items — <<print setup.getCombatItemSlotCapacity()>> slot<<if setup.getCombatItemSlotCapacity() isnot 1>>s<</if>></strong>
<<for _combatItemSlot range setup.getUnlockedCombatItemSlots()>>
<<capture _combatItemSlot _combatEnemyName _combatEnemyImage>>
<<set _combatDefinedItem to setup.getCombatItemById(_combatItemSlot.item)>>
<<set _combatItemAvailability to setup.getCombatItemUseAvailability(_combatItemSlot.index)>>
<<set _combatItemButtonLabel to setup.getCombatItemSlotLabel(_combatItemSlot) + (_combatDefinedItem ? " ×" + setup.getCombatItemCount(_combatDefinedItem.id) : "")>>
<<if _combatItemAvailability.ok>>
<<button _combatItemButtonLabel>>
<<run setup.performCombatItemUse(_combatItemSlot.index)>>
<<replace "#combat-ui">><<combatUI _combatEnemyName _combatEnemyImage>><</replace>>
<</button>>
<<else>>
<button type="button" disabled @title="setup.getCombatItemUnavailableMessage(_combatItemAvailability.reason)"><<print _combatItemButtonLabel>></button>
<</if>>
<</capture>>
<</for>>
<</replace>>
<</button>>
<<if setup.getUsableCombatBodyMods().length>>
<<button "Use Body Mod">>
<<replace "#combat-item-menu">><</replace>>
<<replace "#combat-body-mod-menu">>
<strong>Use Body Mod</strong>
<<if setup.canUseCombinedMantisBladeAction()>>
<<button setup.getCombinedMantisBladeActionLabel()>>
<<run setup.toggleBothMantisBlades()>>
<<replace "#combat-ui">><<combatUI _combatEnemyName _combatEnemyImage>><</replace>>
<</button>>
<</if>>
<<for _combatActiveMod range setup.getUsableCombatBodyMods()>>
<<capture _combatActiveMod _combatEnemyName _combatEnemyImage>>
<<button setup.getCombatBodyModActionLabel(_combatActiveMod)>>
<<run setup.toggleCombatBodyMod(_combatActiveMod.id)>>
<<replace "#combat-ui">><<combatUI _combatEnemyName _combatEnemyImage>><</replace>>
<</button>>
<</capture>>
<</for>>
<</replace>>
<</button>>
<<else>>
<button type="button" disabled title="No usable combat Body Mods are installed">Use Body Mod</button>
<</if>>
<<if $combatContext is "main-quest-artifact">>
<button type="button" disabled @title="_combatEnemyName + ' blocks your only way out'">Try to Escape</button>
<<else>>
<<button "Try to Escape">>
<<set _combatActionResult to setup.performCombatEscape("mc")>>
<<goto _combatActionResult.destination>>
<</button>>
<</if>>
<<elseif !$combatOutcome>>
<button type="button" disabled>Defend</button>
<button type="button" disabled>Rest</button>
<button type="button" disabled>Use Item</button>
<button type="button" disabled>Use Body Mod</button>
<button type="button" disabled>Try to Escape</button>
<</if>>
<div id="combat-item-menu" class="combat-body-mod-menu combat-item-menu" aria-live="polite"></div>
<div id="combat-body-mod-menu" class="combat-body-mod-menu" aria-live="polite"></div>
<</capture>>
</section>
<section class="combat-equipment combat-equipment--enemy" aria-label="Enemy equipment">
<div><span>Weapon</span><strong><<if _combatEnemyWeapon>><<print _combatEnemyWeapon.name>><<else>>None<</if>></strong></div>
<div><span>Ammo</span><strong><<print setup.getVisibleCombatAmmoLabel("enemy")>></strong></div>
<div><span>Armor</span><strong><<if _combatEnemyArmor>><<print _combatEnemyArmor.name>><<else>>None<</if>></strong></div>
</section>
</div>
<<if $combatOutcome>>
<div @class="'combat-outcome combat-outcome--' + $combatOutcome.type" aria-live="assertive">
<<if $combatOutcome.type is "victory">>
<<button "Victory">><<goto $combatOutcome.destination>><</button>>
<<else>>
<<button "Defeat">>
<<set _combatDefeatDestination to setup.resolveCombatDefeatDestination()>>
<<goto _combatDefeatDestination>>
<</button>>
<</if>>
</div>
<<elseif setup.getCurrentCombatActor() is "enemy">>
<<timed 1400ms>>
<<set _combatEnemyResult to setup.performCombatEnemyTurn()>>
<<replace "#combat-ui">><<combatUI>><</replace>>
<</timed>>
<<elseif _combatMcStatus.stunnedTurns > 0>>
<<timed 1400ms>>
<<set _combatStunResult to setup.performCombatStunnedTurn("mc")>>
<<replace "#combat-ui">><<combatUI>><</replace>>
<</timed>>
<</if>>
<</widget>>
<<widget "gearStallUI">>
<<run setup.ensurePlayerCombatEquipmentState()>>
<<set _gearCategory to _args.length && _args[0] is "armor" ? "armor" : (_args.length && _args[0] is "item" ? "item" : "weapon")>>
<<set _gearItems to setup.getGearStallItems(_gearCategory)>>
<div class="gear-stall-interface">
<nav class="gear-stall-tabs" aria-label="Gear categories">
<<if _gearCategory is "weapon">>
<button type="button" class="is-active" disabled>Weapons</button>
<<else>>
<<button "Weapons">><<replace "#gear-stall-ui">><<gearStallUI "weapon">><</replace>><</button>>
<</if>>
<<if _gearCategory is "armor">>
<button type="button" class="is-active" disabled>Armor</button>
<<else>>
<<button "Armor">><<replace "#gear-stall-ui">><<gearStallUI "armor">><</replace>><</button>>
<</if>>
<<if _gearCategory is "item">>
<button type="button" class="is-active" disabled>Items</button>
<<else>>
<<button "Items">><<replace "#gear-stall-ui">><<gearStallUI "item">><</replace>><</button>>
<</if>>
</nav>
<<if $gearStallNotice>>
<p class="gear-stall-notice"><<print $gearStallNotice>></p>
<</if>>
<div class="gear-stall-list">
<<for _gearItem range _gearItems>>
<<capture _gearItem _gearCategory>>
<<set _gearOwned to false>>
<<if _gearCategory is "weapon" or _gearCategory is "armor">>
<<set _gearOwned to setup.ownsPlayerCombatItem(_gearCategory, _gearItem.name)>>
<</if>>
<<set _gearCost to setup.normalizeMoney(_gearItem.cost, 0, false)>>
<<set _gearBuyLabel to "Buy — c" + _gearCost>>
<article @class="'gear-stall-item' + (_gearOwned ? ' is-owned' : '')">
<div class="gear-stall-item-details">
<strong><<print _gearItem.name>></strong>
<<if _gearCategory is "weapon">>
<small>Level <<print _gearItem.level>> · Damage <<print _gearItem.damage>> · <<if setup.isRangedCombatWeapon(_gearItem)>><<if setup.isAutomaticCombatWeapon(_gearItem)>>Automatic (3-shot burst)<<else>>Single shot<</if>> · Magazine <<print _gearItem.magazineSize>> · <<print _gearItem.ammoType>><<else>>Melee<</if>></small>
<<elseif _gearCategory is "armor">>
<small>Level <<print _gearItem.level>> · Defence <<print _gearItem.defence>>%</small>
<<else>>
<small><<print _gearItem.description>> · Owned: <<print setup.getCombatItemCount(_gearItem.id)>></small>
<</if>>
</div>
<div class="gear-stall-item-purchase">
<<if _gearCategory is "item">>
<label class="gear-item-quantity-control" @for="'gear-item-quantity-' + _gearItem.id">
<span>Quantity</span>
<input class="gear-item-quantity" type="number" min="1" max="999" step="1" value="1" @id="'gear-item-quantity-' + _gearItem.id" @data-unit-cost="_gearCost">
</label>
<strong class="gear-item-total-cost">Total: c<<print _gearCost>></strong>
<span class="gear-item-bulk-buy">
<<if !setup.canAfford(_gearCost)>>
<button type="button" disabled title="Not enough credits">Buy selected</button>
<<else>>
<<button "Buy selected">>
<<set _gearPurchaseQuantity to setup.getGearStallItemPurchaseQuantity(_gearItem.id)>>
<<set _gearPurchaseResult to setup.purchaseCombatItems(_gearItem.id, _gearPurchaseQuantity)>>
<<if _gearPurchaseResult.ok>>
<<set $gearStallNotice to "Purchased " + _gearPurchaseResult.purchased + " × " + _gearItem.name + " for c" + _gearPurchaseResult.cost + ".">>
<<else>>
<<set $gearStallNotice to "Not enough credits for that quantity.">>
<</if>>
<<run UIBar.update()>>
<<replace "#gear-stall-ui">><<gearStallUI "item">><</replace>>
<</button>>
<</if>>
</span>
<<elseif _gearOwned>>
<button type="button" class="gear-stall-sold" disabled aria-label="Sold">Sold</button>
<<elseif !setup.canAfford(_gearCost)>>
<button type="button" disabled title="Not enough credits"><<print _gearBuyLabel>></button>
<<else>>
<<button _gearBuyLabel>>
<<set _gearPurchaseResult to setup.purchasePlayerCombatItem(_gearCategory, _gearItem.name)>>
<<if _gearPurchaseResult.ok>>
<<set $gearStallNotice to "Purchased " + _gearItem.name + " for c" + _gearPurchaseResult.cost + ".">>
<<elseif _gearPurchaseResult.reason is "not-enough-credits">>
<<set $gearStallNotice to "Not enough credits for " + _gearItem.name + ".">>
<<elseif _gearPurchaseResult.reason is "already-owned">>
<<set $gearStallNotice to _gearItem.name + " has already been sold to you.">>
<<else>>
<<set $gearStallNotice to "That item could not be purchased.">>
<</if>>
<<run UIBar.update()>>
<<replace "#gear-stall-ui">>
<<if _gearCategory is "armor">>
<<gearStallUI "armor">>
<<else>>
<<gearStallUI "weapon">>
<</if>>
<</replace>>
<</button>>
<</if>>
</div>
</article>
<</capture>>
<</for>>
</div>
</div>
<</widget>>
<<widget "combatEquipmentUI">>
<<run setup.ensurePlayerCombatEquipmentState()>>
<div class="combat-loadout-interface">
<section class="combat-loadout-section">
<header>
<h3>Weapon</h3>
<span>Equipped: <<print $combatEquipment.weapon>></span>
</header>
<div class="combat-loadout-list">
<<for _combatLoadoutItem range setup.getOwnedPlayerCombatEquipment("weapon")>>
<<capture _combatLoadoutItem>>
<article @class="'combat-loadout-card' + ($combatEquipment.weapon === _combatLoadoutItem.name ? ' is-equipped' : '')">
<div>
<strong><<print _combatLoadoutItem.name>></strong>
<small>Damage: <<print _combatLoadoutItem.damage>> · <<if setup.isRangedCombatWeapon(_combatLoadoutItem)>><<if setup.isAutomaticCombatWeapon(_combatLoadoutItem)>>Automatic (3-shot burst)<<else>>Single shot<</if>> · Magazine: <<print _combatLoadoutItem.magazineSize>> · Ammo: <<print _combatLoadoutItem.ammoType>><<else>>Melee<</if>></small>
</div>
<<if $combatEquipment.weapon === _combatLoadoutItem.name>>
<button type="button" disabled>Equipped</button>
<<else>>
<<button "Equip">>
<<run setup.equipPlayerCombatItem("weapon", _combatLoadoutItem.name)>>
<<replace "#combat-loadout-ui">><<combatEquipmentUI>><</replace>>
<</button>>
<</if>>
</article>
<</capture>>
<</for>>
</div>
</section>
<section class="combat-loadout-section">
<header>
<h3>Armor</h3>
<span>Equipped: <<print $combatEquipment.armor>></span>
</header>
<div class="combat-loadout-list">
<<for _combatLoadoutItem range setup.getOwnedPlayerCombatEquipment("armor")>>
<<capture _combatLoadoutItem>>
<article @class="'combat-loadout-card' + ($combatEquipment.armor === _combatLoadoutItem.name ? ' is-equipped' : '')">
<div>
<strong><<print _combatLoadoutItem.name>></strong>
<small>Defence: <<print _combatLoadoutItem.defence>>%</small>
</div>
<<if $combatEquipment.armor === _combatLoadoutItem.name>>
<button type="button" disabled>Equipped</button>
<<else>>
<<button "Equip">>
<<run setup.equipPlayerCombatItem("armor", _combatLoadoutItem.name)>>
<<replace "#combat-loadout-ui">><<combatEquipmentUI>><</replace>>
<</button>>
<</if>>
</article>
<</capture>>
<</for>>
</div>
</section>
<section class="combat-loadout-section combat-loadout-section--items">
<header>
<h3>Items</h3>
<span><<print setup.getCombatItemSlotCapacity()>> slot<<if setup.getCombatItemSlotCapacity() isnot 1>>s<</if>> available</span>
</header>
<div class="combat-loadout-list">
<<for _combatItemSlot range setup.getUnlockedCombatItemSlots()>>
<<capture _combatItemSlot>>
<<set _combatSlottedItem to setup.getCombatItemById(_combatItemSlot.item)>>
<article class="combat-loadout-card combat-loadout-card--item-slot">
<div>
<strong>Item Slot <<print _combatItemSlot.number>></strong>
<small><<if _combatSlottedItem>><<print _combatSlottedItem.name>> · Owned: <<print setup.getCombatItemCount(_combatSlottedItem.id)>><<else>>Empty<</if>></small>
</div>
<<if _combatSlottedItem>>
<<button "Unequip">>
<<run setup.clearCombatItemSlot(_combatItemSlot.index)>>
<<replace "#combat-loadout-ui">><<combatEquipmentUI>><</replace>>
<</button>>
<</if>>
<div class="combat-item-slot-options">
<<for _combatOwnedItem range setup.getOwnedCombatItems()>>
<<capture _combatOwnedItem _combatItemSlot>>
<<if _combatSlottedItem && _combatSlottedItem.id is _combatOwnedItem.id>>
<button type="button" disabled><<print _combatOwnedItem.name>> — Equipped</button>
<<elseif setup.getEquippedCombatItemIds().includes(_combatOwnedItem.id)>>
<button type="button" disabled title="Equipped in another item slot"><<print _combatOwnedItem.name>></button>
<<else>>
<<button _combatOwnedItem.name>>
<<run setup.assignCombatItemToSlot(_combatItemSlot.index, _combatOwnedItem.id)>>
<<replace "#combat-loadout-ui">><<combatEquipmentUI>><</replace>>
<</button>>
<</if>>
<</capture>>
<</for>>
</div>
</article>
<</capture>>
<</for>>
<<if !setup.getOwnedCombatItems().length>>
<p class="combat-loadout-empty">No combat items owned. Buy them from the Gear Stall.</p>
<</if>>
</div>
</section>
</div>
<</widget>><<widget "contractsUI">>
<<set _contractState to setup.ensureMercenaryContractState()>>
<<set _activeContract to setup.getActiveMercenaryContract()>>
<div class="contracts-interface">
<nav class="contracts-tabs" aria-label="Contract categories">
<button type="button" class="is-active" disabled>Takeout</button>
</nav>
<div class="contracts-grid">
<<for _contract range _contractState.offers>>
<<capture _contract>>
<article @class="'contract-card contract-card--' + _contract.status + (_contractState.active === _contract.id ? ' is-active' : '')">
<<if _contract.targetImage>>
<img @src="_contract.targetImage" @alt="_contract.targetName">
<</if>>
<div class="contract-card-details">
<strong><<print _contract.title>></strong>
<span>Payment: c<<print _contract.price>></span>
</div>
<div class="contract-card-actions">
<<if _contract.status === "done">>
<button type="button" class="contract-status-done" disabled>Done</button>
<<elseif _contract.status === "dropped">>
<button type="button" disabled>Dropped</button>
<<elseif _contract.status === "expired">>
<button type="button" disabled>Expired</button>
<<elseif _contractState.active === _contract.id>>
<button type="button" disabled>Active</button>
<<set _contractDropLabel to "Drop — penalty c" + setup.getMercenaryContractPenalty(_contract)>>
<<button _contractDropLabel>>
<<run setup.dropMercenaryContract("manual")>>
<<replace "#contracts-ui">><<contractsUI>><</replace>>
<</button>>
<<elseif _activeContract>>
<button type="button" disabled title="Only one contract may be active">Contract active</button>
<<else>>
<<button "Accept">>
<<run setup.acceptMercenaryContract(_contract.id)>>
<<replace "#contracts-ui">><<contractsUI>><</replace>>
<</button>>
<</if>>
</div>
</article>
<</capture>>
<</for>>
</div>
<<if !_contractState.offers.length>>
<p class="table-order-error">No Criminal targets are available for Takeout contracts.</p>
<</if>>
</div>
<</widget>><<widget "shaveMenu">>
<<set _currentPubicHair to setup.getPubicHairStage()>>
<div class="shave-interface">
<div class="shave-current">
<img @src="setup.getPubicHairImage()" @alt="'Current pubic hair length: ' + _currentPubicHair.label">
<span>Current: <strong><<print _currentPubicHair.label>></strong></span>
</div>
<div class="shave-options" aria-label="Pubic hair length">
<<for _pubicHairStage range setup.pubicHairStages.slice().reverse()>>
<<capture _pubicHairStage>>
<<if _pubicHairStage.id is _currentPubicHair.id>>
<button type="button" class="is-active" disabled><<print _pubicHairStage.label>> — Current</button>
<<elseif setup.canSetPubicHairLength(_pubicHairStage.id)>>
<<button _pubicHairStage.label>>
<<run setup.setPubicHairLength(_pubicHairStage.id)>>
<<replace "#shave-ui">><<shaveMenu>><</replace>>
<</button>>
<<else>>
<button type="button" disabled title="You cannot shave it longer. It must grow naturally over time."><<print _pubicHairStage.label>></button>
<</if>>
<</capture>>
<</for>>
</div>
</div>
<</widget>><<widget "gymMedia">>
<<set _gymMedia to _args[0]>>
<<if _gymMedia>>
<<if _gymMedia.type is "video">>
<video class="gym-workout-media" @src="_gymMedia.file" autoplay loop muted controls></video>
<<else>>
<img class="gym-workout-media" @src="_gymMedia.file" alt="Gym activity">
<</if>>
<</if>>
<</widget>>
<<widget "gymExerciseMenu">>
<<set _gymMenuCategoryId to String(_args[0] || "")>>
<<set _gymMenuCategoryData to setup.gymTrainingCategories.find(function (entry) { return entry.id === _gymMenuCategoryId; })>>
<<if _gymMenuCategoryData>>
<div class="gym-exercise-menu">
<h3><<print _gymMenuCategoryData.label>></h3>
<p><<print _gymMenuCategoryData.description>></p>
<div class="gym-exercise-options">
<<for _gymExercise range setup.getGymExercisesByCategory(_gymMenuCategoryId)>>
<<capture _gymExercise>>
<<link _gymExercise.label>>
<<set _gymResult to setup.completeGymWorkout(_gymExercise.id)>>
<<if _gymResult.ok>>
<<goto "Gym Workout Result">>
<</if>>
<</link>>
<</capture>>
<</for>>
</div>
</div>
<<else>>
<p class="table-order-error">That training category is unavailable.</p>
<</if>>
<</widget>><<widget "melisaBedroomSexUI">>
<<set _bedroomSex to setup.ensureMelisaBedroomSexState()>>
<div class="melisa-bedroom-sex-interface">
<h3><<print setup.formatMelisaBedroomSexLabel(_bedroomSex.currentActionLabel)>></h3>
<p class="melisa-bedroom-sex-position"><<print _bedroomSex.topPartner === "melisa" ? "Melisa is leading" : $mcname + " is leading">></p>
<<if _bedroomSex.currentMedia>>
<div class="arthur-sex-media-frame">
<video class="arthur-sex-media" @src="_bedroomSex.currentMedia.file" autoplay playsinline loop controls muted></video>
<<if _bedroomSex.speech && _bedroomSex.speech.text>>
<div id="melisa-bedroom-sex-speech" @class="'arthur-sex-speech arthur-sex-speech--' + _bedroomSex.speech.speaker">
<img class="arthur-sex-speech-portrait" @src="_bedroomSex.speech.speaker === 'melisa' ? 'media/characters/melisa/melisa.jpg' : setup.getMcPortrait()" alt="">
<span class="arthur-sex-speech-body">
<strong class="arthur-sex-speech-name"><<print _bedroomSex.speech.speaker === "melisa" ? "Melisa" : $mcname>></strong>
<span class="arthur-sex-speech-text"><<print _bedroomSex.speech.text>></span>
</span>
</div>
<</if>>
</div>
<</if>>
<<if _bedroomSex.pendingSequence.length>>
<div class="melisa-bedroom-sex-continue">
<<button "Continue">>
<<run setup.continueMelisaBedroomSexSequence()>>
<<replace "#melisa-bedroom-sex-ui">><<melisaBedroomSexUI>><</replace>>
<</button>>
</div>
<<else>>
<div class="melisa-bedroom-sex-groups">
<<for _bedroomGroup range setup.melisaBedroomSexActionGroups>>
<<set _bedroomActions to setup.getMelisaBedroomSexActions(_bedroomGroup.id)>>
<<if _bedroomActions.length>>
<section class="melisa-bedroom-sex-group">
<h4><<print setup.formatMelisaBedroomSexLabel(_bedroomGroup.label)>></h4>
<div class="arthur-sex-actions">
<<for _bedroomAction range _bedroomActions>>
<<capture _bedroomAction>>
<<button setup.formatMelisaBedroomSexLabel(setup.melisaBedroomSexActionDefinitions[_bedroomAction].label)>>
<<run setup.playMelisaBedroomSexAction(_bedroomAction)>>
<<replace "#melisa-bedroom-sex-ui">><<melisaBedroomSexUI>><</replace>>
<</button>>
<</capture>>
<</for>>
</div>
</section>
<</if>>
<</for>>
</div>
<<if setup.canFinishMelisaBedroomSex()>>
<div class="melisa-bedroom-sex-finish">
<<button "Cuddle together">>
<<run setup.finishMelisaBedroomSex()>>
<<goto "Melisa Bedroom Sex Aftercare">>
<</button>>
</div>
<</if>>
<</if>>
</div>
<<if _bedroomSex.currentMedia>><<run setup.queueMelisaBedroomSexSpeech()>><</if>>
<</widget>><<widget "wardrobeUI">>
<<run setup.ensureWardrobeState()>>
<<set _activeCategory to _args[0] || "outfits">>
<<set _ownedStyles to setup.getOwnedWardrobeStyles(_activeCategory)>>
<<set _requestedStyle to _args.length > 1 ? _args[1] : null>>
<<if _requestedStyle is null || !_ownedStyles.includes(_requestedStyle)>>
<<set _activeStyle to _ownedStyles.length > 0 ? _ownedStyles[0] : null>>
<<else>>
<<set _activeStyle to _requestedStyle>>
<</if>>
<div class="wardrobe-tabs">
<<for _category range setup.wardrobeCategories>>
<<capture _category>>
<<button setup.wardrobeLabels[_category]>>
<<replace "#wardrobe-ui">>
<<wardrobeUI _category>>
<</replace>>
<</button>>
<</capture>>
<</for>>
</div>
<h3><<print setup.wardrobeLabels[_activeCategory]>></h3>
<<if _ownedStyles.length > 0>>
<div class="wardrobe-tabs wardrobe-subcategory-tabs">
<<for _style range _ownedStyles>>
<<capture _style _activeCategory>>
<<button setup.getWardrobeStyleLabel(_style)>>
<<replace "#wardrobe-ui">>
<<wardrobeUI _activeCategory _style>>
<</replace>>
<</button>>
<</capture>>
<</for>>
</div>
<<else>>
<p class="wardrobe-empty">No clothing owned in this category.</p>
<</if>>
<div class="wardrobe-grid">
<!-- The None option -->
<<capture _activeCategory _activeStyle>>
<div class="wardrobe-card">
<img
class="wardrobe-image wardrobe-none-image"
loading="lazy"
@src="setup.getWardrobeNoneImage(_activeCategory)"
alt="Nothing equipped"
>
<div class="wardrobe-item-name">
None
</div>
<<if $worn[_activeCategory] is null>>
<span class="wardrobe-equipped">
Equipped
</span>
<<else>>
<<button "Select">>
<<set $worn[_activeCategory] to null>>
<<run UIBar.update()>>
<<replace "#wardrobe-ui">>
<<wardrobeUI _activeCategory _activeStyle>>
<</replace>>
<</button>>
<</if>>
</div>
<</capture>>
<!-- Owned clothing items in the active subcategory -->
<<for _item range setup.getOwnedWardrobeItemsByStyle(_activeCategory, _activeStyle)>>
<<capture _item _activeCategory _activeStyle>>
<div class="wardrobe-card">
<img
class="wardrobe-image"
loading="lazy"
@src="_item.image"
@alt="_item.name"
>
<div class="wardrobe-item-name">
<<print _item.name>>
</div>
<<if $worn[_activeCategory] is _item.id>>
<span class="wardrobe-equipped">
Equipped
</span>
<<else>>
<<button "Wear">>
<<set $worn[_activeCategory] to _item.id>>
<<run UIBar.update()>>
<<replace "#wardrobe-ui">>
<<wardrobeUI _activeCategory _activeStyle>>
<</replace>>
<</button>>
<</if>>
</div>
<</capture>>
<</for>>
</div>
<div class="wardrobe-global-actions">
<<capture _activeCategory _activeStyle>>
<<button "Remove all clothes">>
<<for _category range setup.wardrobeCategories>>
<<set $worn[_category] to null>>
<</for>>
<<run UIBar.update()>>
<<replace "#wardrobe-ui">>
<<wardrobeUI _activeCategory _activeStyle>>
<</replace>>
<</button>>
<</capture>>
</div>
<</widget>>
<<widget "clothingShopUI">>
<<run setup.ensureWardrobeState()>>
<<set _shopId to _args[0] || "slums">>
<<set _shopCategories to setup.getClothingShopCategories(_shopId)>>
<<set _activeCategory to _args[1] || _shopCategories[0]>>
<<if !_shopCategories.includes(_activeCategory)>>
<<set _activeCategory to _shopCategories[0]>>
<</if>>
<<set _styles to setup.getClothingShopStyles(_shopId, _activeCategory)>>
<<set _requestedStyle to _args.length > 2 ? _args[2] : null>>
<<if _requestedStyle is null || !_styles.includes(_requestedStyle)>>
<<set _activeStyle to _styles[0] || "">>
<<else>>
<<set _activeStyle to _requestedStyle>>
<</if>>
<div class="wardrobe-tabs">
<<for _category range _shopCategories>>
<<capture _shopId _category>>
<<button setup.wardrobeLabels[_category]>>
<<replace "#clothing-shop-ui">>
<<clothingShopUI _shopId _category>>
<</replace>>
<</button>>
<</capture>>
<</for>>
</div>
<h3><<print setup.wardrobeLabels[_activeCategory]>></h3>
<div class="wardrobe-tabs wardrobe-subcategory-tabs">
<<for _style range _styles>>
<<capture _shopId _style _activeCategory>>
<<button `setup.getClothingShopStyleLabel(_shopId, _activeCategory, _style)`>>
<<replace "#clothing-shop-ui">>
<<clothingShopUI _shopId _activeCategory _style>>
<</replace>>
<</button>>
<</capture>>
<</for>>
</div>
<<if $shopNotice>>
<p class="shop-feedback">$shopNotice</p>
<</if>>
<div class="wardrobe-grid">
<<for _item range setup.getClothingShopItems(_shopId, _activeCategory, _activeStyle)>>
<<capture _shopId _item _activeCategory _activeStyle>>
<<set _purchaseLockMessage to setup.getWardrobePurchaseLockMessage(_item)>>
<div class="wardrobe-card">
<img
class="wardrobe-image"
loading="lazy"
@src="_item.image"
@alt="_item.name"
>
<div class="wardrobe-item-name">
<<print _item.name>>
</div>
<div class="shop-item-price">
c<<print _item.price>>
</div>
<<if $ownedClothes[_activeCategory].includes(_item.id)>>
<span class="wardrobe-equipped">Owned</span>
<<elseif _purchaseLockMessage>>
<span class="shop-buy-lock passage-link-disabled--tooltip" @data-tooltip="_purchaseLockMessage" @aria-label="_purchaseLockMessage" tabindex="0">
<button class="shop-buy-disabled" type="button" disabled aria-hidden="true">
Buy — c<<print _item.price>>
</button>
</span>
<<else>>
<<set _buyLabel to "Buy — c" + _item.price>>
<<button _buyLabel>>
<<set _purchase to setup.buyClothingShopItem(_shopId, _activeCategory, _item.id)>>
<<if _purchase.ok>>
<<set $shopNotice to "Purchased " + _item.name + " for c" + _item.price + ".">>
<<run UIBar.update()>>
<<elseif _purchase.reason is "funds">>
<<set $shopNotice to "Not enough credits for " + _item.name + ".">>
<<elseif _purchase.reason is "corruption">>
<<set $shopNotice to "Your Corruption is too high to buy " + _item.name + ".">>
<<else>>
<<set $shopNotice to "That item could not be purchased.">>
<</if>>
<<replace "#clothing-shop-ui">>
<<clothingShopUI _shopId _activeCategory _activeStyle>>
<</replace>>
<</button>>
<</if>>
</div>
<</capture>>
<</for>>
</div>
<</widget>>